c语言 二维数组a【0】与a与a【0】【0】有什么区别?

 我来答
百度网友76bc4363f
推荐于2017-09-04 · TA获得超过1019个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:256万
展开全部
数组在内存中是连续按行分布的,对于a[2][3]={{1,2,3},{4,5,6}};它在内存中的分布式1,2,3,4,5,6;所以他等价于a[2][3]={1,2,3,4,5,6};在c/c++中,数组名也即是数组首地址,这里加入a=0x1000;那么它的地址分就是:1000,1004,1008,100c,1010,1014;&a[0][0]也就取第一个元素的地址,即1000,a[0]是第一行1000,1004,1008的首地址,也是1000,也即是a元素的首地址;

int *b=a[0];
*b和a[0]是等的,是a数组第一行首地址;不同的是a[0]是只读的,*b是可读写的因为b是指针变量,你可以试试a[0][3],a[0][4],a[0][5]都能打印出来,别看a[2][3]以为这样越界了,其实越不越界是按地址来算的,地址上讲,&a[0][3]=a[1],所以完全没问题;按照地址计算上面打印的值就是4,5,6;同理用*(b+3),*(b+4),*(b+5)也是一样的道理;
a就是数组的首地址,a[0]是第一行第一个元素的首地址,也即是a的首地址,&a[0]是第一行的首地址,从数值上将,没问题,只是数据类型上不一样;
a[0][0]就是取第一行第一个元素的值,也即是1
naletive
2012-09-29 · TA获得超过1021个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:131万
展开全部
看推荐答案讲的真烦,a[0][0]是矩阵最左上方的那个值,a[0]是矩阵第一行以及第一个元素以及整个数组的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianfdh
2012-09-28 · 超过15用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:31.5万
展开全部
a[0][0]是值,a[0]和a是地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式