Con trỏ là một biến lưu trữ địa chỉ của một biến khác.
Đặc điểm
Con trỏ tiết kiệm không gian bộ nhớ.
Thời gian thực thi của con trỏ nhanh hơn do truy cập trực tiếp vị trí bộ nhớ.
Với sự giúp đỡ của con trỏ, bộ nhớ được truy cập hiệu quả, tức là bộ nhớ được cấp phát và giải phóng động.
Con trỏ được sử dụng với các cấu trúc dữ liệu.
Con trỏ và mảng hai chiều
Cấp phát bộ nhớ cho mảng hai chiều như sau:
int a[3][3] = {1,2,3,4,5,6,7,8,9};


a[1][2] = *(1234 + 1*3+2) = *(1234 + 3+2) = *(1234 + 5*4) // 4 là hệ số tỷ lệ = *(1234+20) = *(1254) a[1][2] = 6
Ví dụ
Chương trình C sau minh họa cho con trỏ và mảng hai chiều:
#include <stdio.h>
main() {
int a[3][3], i, j;
int *p;
clrscr();
printf("Nhap cac phan tu cua mang 2D");
for (i=0; i<3; i++) {
for (j=0; j<3; j++) {
scanf("%d", &a[i][j]);
}
}
p = &a[0][0];
printf("Cac phan tu cua mang 2d la");
for (i=0; i<3; i++) {
for (j=0; j<3; j++) {
printf("%d \t", *(p+i*3+j));
}
printf("\n");
}
getch();
}
Kết quả
Khi chương trình trên được thực thi, nó cho kết quả sau:
nhap cac phan tu cua mang 2D 1 2 3 4 5 6 7 8 9 Cac phan tu cua mang 2D la 1 2 3 4 5 6 7 8 9