Con trỏ và mảng thường được đối xử giống nhau trong C. Một số khác biệt:
Toán tử &:
&pointer= trả về địa chỉ con trỏ.&array= trả về địa chỉ phần tử đầu tiên.
Toán tử sizeof:
sizeof(array)= trả về tổng bộ nhớ tiêu thụ bởi tất cả phần tử mảng.sizeof(pointer)= chỉ trả về bộ nhớ tiêu thụ bởi biến con trỏ bản thân.
Biến mảng không thể gán lại giá trị, biến con trỏ có thể.
Khai báo:
int a[]; // mảng int *p; // con trỏ
Giả sử có biến con trỏ nguyên:
int *i;
Xét kết quả các gán sau:
a = &i; // gán không hợp lệ. biến mảng không cập nhật/sửa đổi được. p = &i; // gán hợp lệ.