C语言 二维数组 指针

2024-11-25 11:08:05
推荐回答(2个)
回答1:

*(a+2)+1和*(*(a+2)+1)
这完全是两个东西。第二个代表a[2][1]
二维数组名代表的是这个数组首元素的地址或者可以看作二维数组第一行的地址,a+2是指向第三行的,二维数组可以看作是以行为数组名的一维数组比如
int a[2][2]
数组名是a[2]
在这里*(a+2)代表的是第三行首元素的地址,然后加1的话就是第3行第二元素的地址了。所以*(*(a+2)+1)代表a[2][1]

回答2:

a是数组第一行地址,代表一行,偏移量是2*4.
*(a+2)是数组第二行第一列地址,偏移量是4
*(*(a+2)+1)代表a[2][1]的值