多维数组int a[3][3];*a和a是相同的地址,为什么*a+1和a+1就不一样了?

#include"stdio.h"#include"string.h"intmain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};pri... #include"stdio.h"
#include"string.h"
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("%d\n",a+1);
printf("%d",(*a)+1);
getwchar();
}
展开
 我来答
百度网友8041235
2013-04-26 · TA获得超过227个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:230万
展开全部

二维数组 就是 数组 的 数组。把a看出一个一维数组,那么每个元素又是一个一维数组。


先把a看成一维数组,a[0] 是什么东西先不管,

那么 a 也就是第 0  行的首地址。a + 1 就是 第二行的 首地址 


*a 在这里就是 a[0] 的地址 ,所以 *a + 1 就相当与 a[0+1] == a[1] 

百度网友42be3b6
2013-04-26 · TA获得超过1874个赞
知道小有建树答主
回答量:1783
采纳率:25%
帮助的人:987万
展开全部
多维数组也可以当成一维数组来处理.举个例子:
一维数组a[3]={1,2,3},那么a指的就是1的地址,*a便是1;
二维数组的话,a[3][3],等同于三个一维数组,每个一维数组里面又有三个元素,这三个元素我们称之为抱团,那么a便指的是三个抱团数组的首地址,那么*a指的便是第一个抱团里面的第一个元素的地址,那么想取得第一个抱团里面的第一个元素的话,那就是**a了.
由上分析的话,a+1指的就是以抱团为单位的下一个地址,也就是第二个抱团的地址,(*a)+1指的是第一个抱团里面+1,也就是第一个抱团里面的第二个元素,于是*((*a)+1)便是2.
不知道你懂了没呢?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f160a72
2013-04-26 · TA获得超过363个赞
知道小有建树答主
回答量:461
采纳率:0%
帮助的人:403万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式