Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C
85
Như trên chúng ta biết, mảng được cấp phát tại vùng nhớ nào đó và địa chỉ của vùng
nhớ đó chính là địa chỉ của mảng. Tên mảng là con trỏ trỏ tới chính địa chỉ của nó hay
nói khác tên mảng là con trỏ lưu địa chỉ của mảng, nhưng là hằng con trỏ. Chúng ta giải
thích cụ thể hơn qua ví dụ sau:
Ví dụ với khai báo
int A[3], D[2][5];
thì A, D là các con trỏ và: A chính là địa chỉ của mảng A, hay bằng &A[0]; tương tự cho
mảng D ta cũng có D
⇔ &D[0].
Và theo như cách gọi của con trỏ thì ta nói A là con trỏ trỏ tới phần tử đầu tiên của mảng.
Với mảng hai chiều D thì cũng tương tự, D cũng là một con trỏ trỏ tới D[0], và D[0] lại là
một con trỏ trỏ tới D[0][0], có thể nói D là con trỏ trỏ tới con trỏ.
Như vậy A là mảng kiểu int tức là các phần tử của nó có kiểu int, và như vậy A là con
trỏ kiểu int, hay A có kiểu là int *.
Tương tự, D[i] (nó chung là các hàng của mảng D) là con trỏ kiểu int, tức là D[i] có
kiểu là int *, và D là con trỏ trỏ tới D[0] - Các D[i] là mảng int[5], vậy D là con trỏ kiểu
int [5].
Tên mảng có thể gán cho các (biến) con trỏ có kiểu phù hợp.
Ví dụ: với các con trỏ và mảng sau
int
A[10];
int
D[2][4];
int
*p;
int (*q)[4]; // khai báo q là con trỏ kiểu int [4],
chúng ta có thể thực hiện các phép gán sau:
p = A;
q = D;
p = D[i];
¾
Chia sẻ với bạn bè của bạn: