Con trỏ tới một mảng trong C



Có thể bạn sẽ không hiểu chương này tới khi bạn đọc qua chương về Con trỏ trong C.

Vì thế giả sử rằng bạn đã hiểu biết chút nào đó về con trỏ trong Ngôn ngữ C, vậy chúng ta cùng bắt đầu: Một tên mảng là một con trỏ hằng số tới phần tử đầu tiên của mảng. Vì thế, trong khai báo:

double phithuebao[50];

phithuebao là một con trỏ tới &phithuebao[0], mà là địa chỉ của phần tử đầu tiên của mảng phithuebao. Do vậy, đoạn chương trình sau gán p địa chỉ của phần tử đầu tiên của phithuebao:

double *p;
double phithuebao[10];

p = phithuebao;

Sử dụng các tên mảng như là các con trỏ hằng số là hợp lệ, và ngược lại. Vì thế, *(phithuebao + 4) là cách chính thống để truy cập dữ liệu tại phithuebao[4].

Một khi bạn lưu địa chỉ của phần tử đầu tiên trong p, bạn có thể truy cập các phần tử mảng bởi sử dụng *p, *(p+1), *(p+2), …. Dưới đây là ví dụ để chỉ tất cả các khái niệm được đề cập ở trên:

#include <stdio.h>

int main ()
{
   /* mot mang gom 5 phan tu */
   double phithuebao[5] = {50.40, 30.24, 108.40, 56.12, 45.26};
   double *p;
   int i;

   p = phithuebao;
 
   /* Hien thi gia tri cac phan tu trong mang */
   printf( "Hien thi gia tri cac phan tu trong mang boi su dung con tro\n\n");
   for ( i = 0; i < 5; i++ )
   {
       printf("*(p + %d) : %f\n",  i, *(p + i) );
   }

   printf( "\n\nHien thi gia tri boi su dung *phithuebao la dia chi\n\n");
   for ( i = 0; i < 5; i++ )
   {
       printf("*(phithuebao + %d) : %f\n",  i, *(phithuebao + i) );
   }
   printf("\n===========================\n");
   printf("VietJack chuc cac ban hoc tot! \n");
 
   return 0;
}
Quảng cáo

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Con trỏ trỏ tới mảng trong C

Trong ví dụ trên, p là một con trỏ tới double, mà có nghĩa là nó có thể lưu giữ địa chỉ của một biến kiểu double. Một khi chúng ta có địa chỉ trong p, thì sau đó *p sẽ cung cấp giá trị có sẵn tại địa chỉ được lưu trong p, như chúng tôi đã chỉ trong ví dụ trên.

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học lập trình C phổ biến khác tại VietJack:


mang_trong_c.jsp

Tài liệu giáo viên