C++二维数组a[m][n]为何可以int (*p)[n]=\u0026a[i],而不能p=a[i]赋值(0\u003c=i\u003cm)?( 二 )

p=\u0026amp;a表示的是什么?a本来就是一个地址,你还要再对a取地址,应该还是它本身,但是含义不同。非形参数组名都是指针常量,对指针常量取地址还是它本身(或者压根取不了地址,因为常量可能没地址)。你也可以在编译器里面打一下看看会不会报错。

■网友
这个问题真特么的乱,涉及数组指针和指针数组,指针-数组的一致性,*和值和\u0026amp;的关系,还有在特定的重载类型下的指针和值的隐式类型转换。如果过几天没大牛,我就回来答这个问题。
■网友
int a;int (*p);a,a,a,a是啥?它们每一个都是(int )的结构(5个连续int的结构);p 是啥?它的类型是(int (*) ),也就是说,它是一个指向(int )结构的指针;所以,p要指向某个(int ),当然要对(int )结构取地址,也就是对a取地址,即\u0026amp;a。
■网友
允许这么做的话,那么 p 到底是什么?是 a 还是 a?你想让编译器怎么解释给你看。


推荐阅读