int a[2][2]={{1,2},{3,4}},那*(a+1)代表什么?

 我来答
希声和寡
推荐于2017-09-17 · TA获得超过2.6万个赞
知道大有可为答主
回答量:6437
采纳率:0%
帮助的人:3503万
展开全部
对于二维数组来说,例如a[x][y],
在空间结构上,x表示行,y表示列。

所以*(a+i)表示的是第i行的行首地址,
所谓行首地址,也就是该行的数组成员的首地址。
是可以等同的视为&a[i][0]的。

所以,这里的*(a+1)代表第一行的数组成员的首地址。
第一行数组成员为{3,4},所以*(a+1)也就指向&a[1][0],也就是这里的3这个数组成员的地址
高金山
2009-01-05 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1708万
展开全部
非常简单!

*(a+1)相当于a[1],它是一个int [2]的数组!

说它是第二行的首地址,不是很准确,因为没有说明它的类型。
你可以说a是数组a[2][2]的首地址,但地址表示不了数组。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友551df6c
2008-12-29 · 超过24用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:74.9万
展开全部
楼上的都在乱说,a[2][2]是一个二维数组,而指针a存储的是数组{1,2}和{3,4}的起始地址指针,可以说是"指针的指针",所以*(a+1)得到的是第二个数组,也就是{3,4}的起始地址,*(*(a+1))才等于3,其实楼主可以自己用C++调试,查看内存的分配的,就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伪数学家
2009-01-13 · TA获得超过677个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:280万
展开全部
*(a+1)={3,4}
是一维数组,错不了的

如果说代表什么的话,应该是“数组a的首地址加上2*sizeof(int),这个地址所对应的一维数组”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友556f220c0
2008-12-29 · 超过33用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:0
展开全部
//实践一下,基于WEN TC
//测试*(a+i)
#include<stdio.h>
int a[2][2]={{1,2},{3,4}};
void main(void)
{
unsigned int i;
for(i=0; i<4; i++)
{
printf("%d\n",*(a+i));
}
getch();
}
/*
打印结果为
404
408
412
416
一看就知道是地址
*/

//测试*(*(a+0)) 、*(*(a+0)+1) 、*(*(a+1)+0) 、*(*(a+1)+1)
#include<stdio.h>
int a[2][2]={{1,2},{3,4}};
void main(void)
{
printf("%d\n%d\n%d\n%d\n",*(*(a+0)),*(*(a+0)+1),*(*(a+1)+0),*(*(a+1)+1));
}

/*
打印结果为
1
2
3
4
结果正确,说明
指针a存储的是数组{1,2}和{3,4}的起始地址指针,可以说是"指针的指针"
*/

int a[2][2]={{1,2},{3,4}},那*(a+1)代表什么?
回答:
*(a+1)代表第二行元素{3,4}的首地址,*(*(a+1))等于3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式