Cộng đồng chia sẻ tri thức Lib24.vn

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

Gửi bởi: Phạm Thị Phương Hoa 28 tháng 10 2019 lúc 14:09:04


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 <iostream>
using namespace std;
 
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 
   cout << "Hien thi gia tri mang boi su dung con tro!" << endl; 
   for ( int i = 0; i < 5; i++ )
   {
       cout << "Gia tri cua *(p + " << i << ") la: ";
       cout << *(p + i) << endl;
   }

   cout << "Hien thi gia tri mang boi su dung phithuebao lam dia chi!" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "*Gia tri cua (phithuebao + " << i << ") la: ";
       cout << *(phithuebao + i) << endl;
   }
 
   return 0;
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

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 cập nhật: 28 tháng 4 lúc 23:37:45 | Lượt xem: 435