为什么C语言中*(a+i)+j能表示a[i][j]的地址

 我来答
包艳戢珧
2019-01-12 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:894万
展开全部
int
a[3][4];
//假设定义一个3行4列的二维数组,所谓二维数组就是数组的数组
a[0]、a[1]、a[2]是数组a的元素,而这个元素是数组,而不是我们通常认为的基本数据类型的数据
所以*(a+i)就是获取数组a中第i个元素,等价于a[i],而a[i]本身又是一个包含有4个int型数值的数组,a[i]是这个一维数组的数组名,我们知道数组名的本质是一个地址,是数组首元素地址,所以
*(a+i)+j就是表示下表第i行的第j个元素的地址了。所以,
*(a+i)+j表示的含义是元素a[i][j]的地址,也可以用a[i]+j来表示。
合元武冼未
2019-09-02 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:897万
展开全部
a是一个指针,a+i表示a所指位置的下i个内存区,a+j同理。
这个程序的功能是:

交换
a+i

a+j
所指内存区的内容,t是中间变量。

就好像你要交换两瓶饮料,一瓶汽水,一瓶果汁,交换它们,要找一个空瓶子,这里,t就是空瓶子
a+i

a+j
就是你要交换的两瓶饮料,一共要倒三次,你懂了吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兰才艺寒姮
2019-06-28 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:28%
帮助的人:595万
展开全部
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]。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式