有二位数组a[n][m] 对于指针问题 *(*(a+i)+j) 与 a[i][j] 为什么等价 (

有二位数组a[n][m]对于指针问题*(*(a+i)+j)与a[i][j]为什么等价(i,j在n,m范围内)?对于*号不是取值吗?a是a[0][0]的地址,那么a+i也是... 有二位数组a[n][m] 对于指针问题 *(*(a+i)+j) 与 a[i][j] 为什么等价 (i ,j在n,m范围内)?
对于*号不是取值吗?a是a[0][0]的地址,那么a+i也是i行地址 ,则*(a+i)不是值吗?然后再加 j 再用 *符号干什么?书上只有*(*(a+i)+j) 与 a[i][j] 等价,但我不理解!
展开
 我来答
White_MouseYBZ
2016-04-16 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6644万
展开全部
a[i][j]是第i行(0算起)第j列(0算起)的元素值。a+i是第i行的行指针,那么*(a+i)就是第i行第0个元素的指针,自然*(a+i)+j就是第i行的第j个元素的指针了,最后通过这个指针用*取出来的值*(*(a+i)+j)不就是第i行第j列的值吗?这当然就和a[i][j]完全是一回事了……
更多追问追答
追问
* (a+i)为什么是指针不是元素啊
追答
那要看a是一维数组名还是二维数组名了,一维时就是元素(值),二维或以上时就是指针。因为一维时,a是下标为0的元素的指针,a+i就是下标为i的元素的指针,*(a+i)自然就是下标为i的元素值。二维时形式是a[i][j]这样的,把a[i][j]看作是数组名为a[i]的一维数组,那么a[i]就是下标为0的元素的指针,而a[i]不是与*(a+i)等价吗?既然a[i]是一维数组的下标为0的元素的指针,为什么*(a+i)就不是呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式