Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Con trỏ vs Mảng trong C


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ệ.