Khái niệm
Con trỏ là biến lưu trữ địa chỉ của biến khác.
Cú pháp
pointer = &variable;
Chương trình minh họa
#include <stdio.h>
void main() {
int a = 2;
int *p; // khai báo con trỏ int
p = &a; // p lưu địa chỉ của a
printf("Kich thuoc int: %d\n", sizeof(int)); // 4
printf("Dia chi cua %d la %d\n", a, p); // địa chỉ
printf("Gia tri tai %d la %d\n", a, *p); // 2
printf("Gia tri o dia chi tiep theo cua %d la %d\n", a, *(p+1)); // rác
printf("Dia chi tiep theo cua %d la %d\n", a, (p+1)); // địa chỉ +4
// Ép kiểu con trỏ sang char*
char *p0;
p0 = (char*)p;
// a = 2 = 00000000 00000000 00000000 00000010 (binary)
printf("Kich thuoc char: %d\n", sizeof(char)); // 1
printf("Dia chi cua %d la %d\n", a, p0); // cùng địa chỉ
printf("Gia tri byte dau cua %d la %d\n", a, *p0); // byte đầu: 2
printf("Gia tri byte thu 2 cua %d la %d\n", a, *(p0+1)); // byte 2: 0
printf("Dia chi byte thu 2 cua %d la %d\n", a, (p0+1)); // địa chỉ +1
}
Kết quả (địa chỉ có thể khác nhau)
Kich thuoc int: 4 Dia chi cua 2 la 6422028 Gia tri tai 2 la 2 Gia tri o dia chi tiep theo cua 2 la 463824 Dia chi tiep theo cua 2 la 6422032 Kich thuoc char: 1 Dia chi cua 2 la 6422028 Gia tri byte dau cua 2 la 2 Gia tri byte thu 2 cua 2 la 0 Dia chi byte thu 2 cua 2 la 6422029