指针问题:
int a[5] = {1,2,3,4,5};
int *p = a;
int (*pa)[5] = &a;
由于a是一个有5个元素的数组,a表示数组起始地址,&a也表示取数组起始地址,我打印a和&a的值是一样的。
p是一个指针,指向数组a;而Pa是一个指针,指向有5个int型元素的数组,那么P和Pa同样是一个指针,而a和&a同样是取地址值,为什么两者初始化时候不能交叉呢,也就是说写成: int *p = &a;
int (*pa)[5] = a;
这两种写法都有误的,请问a和&a的区别在哪里呢?和*p、(*pa)[5]在一起这样用怎么解释呢?谢谢!