作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/29 14:56:18
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])?
C语言 若有定义语句:int a[2][3],*p[3];则以下语句中正确的是()A.p=a;B.p[0]=a;C.p[
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看看 《让你不再害怕指针》
回答完毕.