Địa chỉ của biến là một con số. Ta có thể tạo biến khác để lưu địa chỉ của biến này. Ở đây ta dùng Con trỏ. Giống như mọi biến khác, biến con trỏ muốn sử dụng cũng cần phải được khai báo. Con trỏ NULL là con trỏ không trỏ vào đâu cả. Khác với con trỏ chưa được khởi tạo.
Khi mới khai báo, biến con trỏ được đặt ở địa chỉ nào đó (không biết trước). chứa giá trị không xác định trỏ đến vùng nhớ không biết trước. Đặt địa chỉ của biến vào con trỏ sử dụng (toán tử &). Con trỏ chứa một số nguyên chỉ địa chỉ. Để truy xuất đến ô nhớ mà con trỏ trỏ đến, sử dụng (toán tử *). Ví dụ: Trong C:
int n;
int *p1 = &n; // khai báo và đặt địa chỉ của biến vào con trỏ
int *p2; // unreferenced local variable
int *p3 = NULL;
int a = 5, *pa = &a;
printf("\nGia tri bien pa: %d", pa);
printf("\nDia chi cua bien a: %d", &a);
// -> pa và &a đều chỉ địa chỉ của biến a
printf("\nGia tri vung nho pa tro den: %d", *pa);
printf("\nGia tri cua bien a: %d", a);
// -> *pa và a đều chỉ nội dung của biến a
printf("\nDia chi bien pa: %d", &pa);
// -> địa chỉ biến pa,
// có 2 cái địa chỉ
// 1 là địa chỉ của biến con trỏ pa
// 2 là địa chỉ mà con trỏ pa trỏ đến
// Toán tử * để lấy ra giá trị mà con trỏ đang trỏ đến
// Ko để toán tử gì cả thì lấy ra địa chỉ mà con trỏ đang trỏ đến
// Nếu để cả dấu & trước tên con trỏ thì ta đang lấy ra "địa chỉ của riêng" con trỏ.
Nhận xét
Đăng nhận xét