有二位数组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] 等价,但我不理解! 展开
对于*号不是取值吗?a是a[0][0]的地址,那么a+i也是i行地址 ,则*(a+i)不是值吗?然后再加 j 再用 *符号干什么?书上只有*(*(a+i)+j) 与 a[i][j] 等价,但我不理解! 展开
1个回答
展开全部
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)就不是呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询