Mảng con trỏ (Array of Pointers)
Khai báo: kieu *ten_mang[kich_thuoc];
Ví dụ: int *p[5]; – mảng 5 con trỏ int.
Khởi tạo
int a[3] = {10,20,30};
int *p[3];
for (int i=0; i<3; i++) p[i] = &a[i]; // hoặc p[i] = a+i;
Truy cập
for (int i=0; i<3; i++) printf("%d ", *p[i]);
Chương trình
#include <stdio.h>
int main() {
int a[3] = {10,20,30};
int *p[3];
for (int i=0; i<3; i++) p[i] = &a[i];
printf("Cac phan tu: ");
for (int i=0; i<3; i++) printf("%d ", *p[i]);
return 0;
}
Kết quả
Cac phan tu: 10 20 30
Con trỏ tới con trỏ (Pointer to Pointer)
Biến lưu địa chỉ của một con trỏ khác.
Khai báo
kieu **ten_bien;
Ví dụ: int **p;
Khởi tạo
int a = 10; int *p = &a; int **q = &p;
Truy cập
*p– giá trị của a (10)**q– giá trị của a qua q (10)
Chương trình
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
int **q = &p;
printf("a = %d\n", a);
printf("*p = %d\n", *p);
printf("**q = %d\n", **q);
return 0;
}
Kết quả
a = 10 *p = 10 **q = 10