Điều này hoạt động rất tốt ...Tại sao không tham chiếu đến một mảng hoạt động cho đến khi chúng ta sử dụng một con trỏ?
int a[5] = {1,2,3,4,5}, int *p = a;
int *& ref = p;
Nhưng tại sao tính năng này không hoạt động?
int a[5] = {1,2,3,4,5};
int*& ref = a;
Cả a
và p
là con trỏ và có giá trị như nhau (địa chỉ của a[0]
). Khi tôi tham chiếu đến một mảng bằng cách sử dụng con trỏ (p
), nó hoạt động rất tốt.
Nhưng khi tôi tham chiếu đến mảng đó a[]
trực tiếp, nó không hoạt động ... Tại sao?
Tên mảng không phải là một "địa chỉ liên tục". Điều này làm việc vì một tham chiếu const có thể bị ràng buộc vào tạm thời mà các mảng phân rã tạo ra. – Quentin
Địa chỉ của * tĩnh * mảng là một hằng số địa chỉ. Địa chỉ của * local * array không. – AnT