Saturday, July 11, 2020

Truyền con trỏ tới mảng trong C

Xin chào mừng bạn đến với khoá học lập trình c cơ bản, hôm nay tiếp tục chia sẽ cho các bạn một trong những bài học Truyền con trỏ tới mảng trong C, đây là bài học khoá quan trọng.
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 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 ()
 {
     //mang sau co 5 phan tu.
     double phithuebao[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
     double *p;
     p = phithuebao;
     // hien thi gia tri cac phan tu trong mang
     printf ("Hien thi gia tri mang boi su dung con tro!");
     for (int i = 0; i < 5; i++)
     {
         printf("Gia tri cua p:",*(p + i));
     }
     for (int i = 0; i < 5; i++)
     {
         printf( "*Gia tri cua (phithuebao + ",*(phithuebao + i));
     }
 return 0;
 }
Chạy chương trình C++ trên sẽ cho kết quả như hình sau:
Truyền con trỏ tới mảng trong C

No comments:

Post a Comment