为什么C语言中*(a+i)+j能表示a[i][j]的地址
3个回答
展开全部
int a[2][3]={10,20,30,40,50,60};
printf("%d ",*(*(a+1)+2));
以上的引用能够输出60
因为a是二维数组名,所以它是指向指针的指针(二级指针)。
*(a+1)就是a[1],它是一个一维数组,也是一维数组的首地址(指向一维数组首元素的指针)。*(a+1)+2就是a[1][2]的地址,*(*(a+1)+2)就是a[1][2]。
printf("%d ",*(*(a+1)+2));
以上的引用能够输出60
因为a是二维数组名,所以它是指向指针的指针(二级指针)。
*(a+1)就是a[1],它是一个一维数组,也是一维数组的首地址(指向一维数组首元素的指针)。*(a+1)+2就是a[1][2]的地址,*(*(a+1)+2)就是a[1][2]。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*(a+0)取出a[0]的值
a[0]的元素又是一个一维数组
因此*(a+0)取出的就是这个一维元素的首地址
那么*(a+0)+0表示: 一维数组a[n]中, a+0数组元素a[0]的地址
*(a+0)+1表示一维数组的1号数组元素的地址
a[0]的元素又是一个一维数组
因此*(a+0)取出的就是这个一维元素的首地址
那么*(a+0)+0表示: 一维数组a[n]中, a+0数组元素a[0]的地址
*(a+0)+1表示一维数组的1号数组元素的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询