二维数组元素地址中*的作用???

二维数组元素地址中*的作用???图中的二也说了a+1的值与a[2]相同,那三(3)为什么还有那个*呢?
三中(2)a[i]表示第i行的首地址,加j正好表示a[i][j]的地址
而(3)中a+i已经表示第i行的首地址,*是间接访问符,通过地址了解访问变量,所以*(a+i)应该是a[i][0]这个数组元素,再+j应该变得很奇怪,没有意义啊
为什么这么写呢?
求详细解释

*(a+1) == a[1]

这俩是相等的追问

这我知道

追答

那么2,3就一样了。我原来也经常想不明白,完了想明白了还会忘。就直接背下来吧

追问

我觉得这个说的挺到位,你怎么看

追答

没看懂它说的....也不是很复杂,你想,*(p+1)这东西是啥?他就等于一个p,因为是二维数组嘛,一维部分就是一串数组,只是这串数组的元素有点特殊,每个元素都是指向另一个数组首位的指针。p+1是啥?就是p[1]的内存地址,记住有*标就是抓取指针下地址内储存的数据本身。p+1是这个二维数组的一维部分的p[1]的内存地址,*(p[1])==p[1]这的数,也就是*(p+1)是p[1]位置存储的数,p[1]位置存储的数是个数组指针,相当于一个Q(随便命名),那Q+1就好理解了,就是前面数组的Q位置起头的数组的1位置的指针(没有*,不取数据),就是*(p+1)+1了。

不知道你明白没有,看他写的那个能明白也行,看个人理解吧

很讨厌*这种写法哎,不直观,每次都想很久...脑袋不够用T T

温馨提示:答案为网友推荐,仅供参考
相似回答