Con trỏ lưu địa chỉ biến khác.
Khai báo & Khởi tạo
int qty = 175; int *p = &qty; // p trỏ đến qty
Các phép toán hợp lệ
*p1 + *p2,*p1 - *p2,*p1 * *p2,*p1 / *p2– toán học trên giá trị.p1 + 4,p2 - 2– con trỏ +/- số nguyên (nhảy theo scale factor).p1 - p2– số phần tử giữa 2 con trỏ (cùng mảng).p1++,--p2– tăng/giảm con trỏ.sum += *p2– cộng giá trị.- So sánh:
p1 > p2,p1 == p2,p1 != p2– so sánh địa chỉ.
Các phép toán KHÔNG hợp lệ
p1 + p2,p1 * p2,p1 / p2,p1 / 3
Chương trình minh họa
#include <stdio.h>
int main() {
int a = 12, b = 4;
int *p1 = &a, *p2 = &b;
int x = *p1 * *p2 - 6; // 12*4-6 = 42
int y = 4 - *p2 / *p1 + 10; // 4 - 4/12 + 10 = 14 (integer division)
printf("Dia chi a = %p\n", (void*)p1);
printf("Dia chi b = %p\n", (void*)p2);
printf("a=%d b=%d\n", a, b);
printf("x=%d y=%d\n", x, y);
return 0;
}
Kết quả
Dia chi a = 0x7ffc... Dia chi b = 0x7ffc... a=12 b=4 x=42 y=14