怎么理解ar2[r][c]==*(*(ar2+r)+c)

发布网友

我来回答

3个回答

热心网友

先看 *(ar2+r) 这部分:ar2代表数组首元素的首地址,ar2+r就是首地址再加上r个偏移量,计算出新的地址然后再取这个地址的值。其实就是ar2[r]的值。那么*(*(ar2+r)+c),就是*(ar2[r]+c),就是ar2[r]+c的值当作一个地址值,然后在这个地址值取该地址上内存保存的值。这样很明显前后的意思还是有区别的。

热心网友

(ar2+r)+c的地址与ar2[r][c]所指地址相同ar2+r等同于ar2[r]

热心网友

1楼讲得很清楚了,我把最难理解的地方再详细讲一下

ar2[r]是一个指向指针的指针,存储的内容是地址(注意和一级指针的区别),这个地址是每一行的首地址。既然这样,那麼*(ar2+r)是什麽意思呢?说到这里楼主应该明白了吧,对一个指针解除引用,可以得到该指针指向的内容,既然该指针存储的是地址,那麼自然*(ar2+r)就是一个地址,打印出来的话是个16进制的数。剩下的就好理解了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com