Con trỏ là một biến lưu trữ địa chỉ của một biến khác.
Tính năng
-
Con trỏ tiết kiệm dung lượng bộ nhớ.
-
Thời gian thực thi của con trỏ nhanh hơn vì truy cập trực tiếp vào vị trí bộ nhớ.
-
Với sự trợ 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à phân bổ động.
-
Con trỏ được sử dụng với cấu trúc dữ liệu.
Con trỏ và mảng hai chiều
Cấp phát bộ nhớ cho một 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 is Scale factor = * (1234+20) = *(1254) a[1] [2] = 6
Ví dụ
Sau đây là chương trình C cho con trỏ và mảng hai chiều -
#include<stdio.h> main ( ){ int a[3] [3], i,j; int *p; clrscr ( ); printf ("Enter elements of 2D array"); for (i=0; i<3; i++){ for (j=0; j<3; j++){ scanf ("%d", &a[i] [j]); } } p = &a[0] [0]; printf ("elements of 2d array are"); for (i=0; i<3; i++){ for (j=0; j<3; j++){ printf ("%d \t", *(p+i*3+j)); } printf ("\n"); } getch ( ); }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
enter elements of 2D array 1 2 3 4 5 6 7 8 9 Elements of 2D array are 1 2 3 4 5 6 7 8 9