Gặp vấn đề liên quan đến việc gán giữa con trỏ và mảng

Như tiêu đề thì em có các thắc mắc các dòng code sau:

int *p;// (1)
int arr[3] = { 0, 1, 2 };//(2)
p =arr;//Không hợp lệ//(3)
p=&arr[0];//Hợp lệ//(4)
p=&arr;//Hợp lệ(5)

Trong khi

arr=007DF9A8;
&arr[0]=007DF9A8;
&arr=007DF9A8;

có cùng địa chỉ

Con trỏ của bạn đâu?

2 Likes

Biến p là con trỏ, nó chỉ có thể trỏ vào một mảng tĩnh hoặc một con trỏ khác cùng cấp(cùng kiểu)

Với mảng tĩnh, khi dùng &(ở 3) nó sẽ trở thành một con trỏ mảng, lúc này không cùng cấp với con trỏ p, vậy nên không gán được là đương nhiên.(ở đây p bị gán vào *[], khác * hoặc [])

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?