作业帮 > 综合 > 作业

C语言的一个概念性问题,我很难理解.Thank you

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/18 19:10:39
C语言的一个概念性问题,我很难理解.Thank you
通过地址来引用二维数组元素.
若有以下定义:
int a[3][4],i,j;
且当0
分析一下:*(a+i)[j].
1.首先,因为[]优先级(顶级)高于*(次顶级),所以应先算[].所以先只看(a+i)[j].
2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位数组的数组名.把a+i记作x,那么(a+i)[j] 就可以记成 x[j].
3.由取下标运算的含义:x[j]实际上是*(x+j),即先找地址后进行间接运算.而x是a+i,代进去就得到*(a+i+j).记住,(a+i)[j]也是一个行指针.
4.把前面的*代进来,得到*(*(a+i+j)),实际上是a[i+j][0].