int *p[3]说明p的每一个元素都是指针,p相当于一个二级指针,所以ABD是错误的
具体如下:
int*p[3],a[3];
p中的每个元素都是二级指针,所以p相当于一个二级指针。
&a[0]是取a的第一个元素的地址,是一级指针,所以A错误
*p等价于p[0],也就是p中的第一个元素,是一级指针,
*a是取a中的第一个元素,是一个int类型,**a就是取这个元素指向的内存下的数据,这么用会引起系统崩溃,
哪怕不崩溃,它的只也是一个int类型,不能把int类型赋值给指针,所以B错误。
**p就是取p[0]指向的内存下的值,是一个int类型,a是数组首地址,是指针,不能把指针赋值给int类型,所以D错误
p数组元素是int * 指针,那么p就相当于指针的指针
A: a[0]是整型,取地址是int * 指针,不能赋值给指针的指针
B:a相当于指针,** a本身就是错误用法
C:a相当于指针,p[0]是int * ,可以赋值
D:** p是整型值,a是指针,不能赋值