C语言 若有定义语句:int a[2][3],*p[3];则以下语句中正确的是()A.p=a;B.p[0]=a;C.p[

C语言
若有定义语句:int a[2][3],*p[3];则以下语句中正确的是()
A.p=a;B.p[0]=a;
C.p[0]=&a[1][2]; D.p[1]=&a;
但是我在其他地方看到似乎A这种表达也没有错误,还有*p[3]是不是等价于*(p[3])?
hiyuan 1年前 已收到1个回答 举报

danmy 幼苗

共回答了20个问题采纳率:95% 举报

int a[2][3], *p[3];
分析:
对于a来说,毫无疑问,a是一个二维数组,a的值指向int类型的起始地址.
对于p,首先p先与'[ ]'结合 p[3],表示p是一个数组,p再与'*'结合成' *p[3] ',表示p数组里面存放的时指针变量,最后与int类型结合成' int *p[3] ',表示数组存放的时指向int类型的指针.
p[0]=&a[1][2];
所以p[0]的值是一个指向int类型的指针.
而a[1][2]的值是一个int类型,再加上'&'(取地址符)得到的就也是一个指向int类型的指针了.
所以p[0]=&a[1][2];成立.
建议ZL看看 《让你不再害怕指针》
回答完毕.

1年前

12
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.050 s. - webmaster@yulucn.com