若定义: inta[][3], *p[3],问一下为什么p[0]=a;不对呢,这里面p是二级指针 若有定义语句“inta【2】【3】,*p【3】;”,则下语句...

作者&投稿:寇浩 (若有异议请与网页底部的电邮联系)
首先需要知道,这里的p是一个指针数组,而不是一个数组指针,p[0]是这个指针数组的第一个元素,该元素是一个一维指针,所以不能将a直接赋值给p,因为a是一个二维数组的名字。直接使用p=a也是不可以的,如果将p定义为如下形式就可以了,如int (*p)[3];这里的p就是一个数组指针了,可以直接将a赋值给p,如p=a;

int a[2][3],*p[3]; 为什么p[0]=a不对~

类型不同
a是二维数组 所以a的类型等同于int **
而p是int *数组,也就是说p的类型是int ** 而p[0]是int *型的
所以p[0]=a是不同类型间赋值,一般不推荐这种操作,会引起混乱

p是一个整型指针的数组,C正确(D你没有写完整吧)