01/10/2018, 13:29

Gặp vấn đề liên quan đến việc gán giữa con trỏ và mảng. Mong mọi người giúp đỡ

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ỉ

Dark.Hades viết 15:30 ngày 01/10/2018

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

Dark.Hades viết 15:35 ngày 01/10/2018

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 [])

Bài liên quan
0