C++关于理解数组指针

书上说*(a[0]+1表示a[0][1]元素的值,而a[0]和*(a+0)等价,因此也可以用*(*(a+0)+1)表示a[0][1]。这里是怎么理解的,我的理解:a[0]... 书上说*(a[0]+1表示a[0][1]元素的值,而a[0]和*(a+0)等价,因此也可以用*(*(a+0)+1)表示a[0][1]。这里是怎么理解的,我的理解:a[0]表示a[0][0]的地址,*(a+0)表示地址里面的值,地址怎么会等于地址里面的值呢 展开
 我来答
泽兮如颜
2010-10-11 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:103万
展开全部
楼主的理解有些混乱呀。
*的作用有以下几个:
定义指针,例如 int *a;表示定义了一个int型的指针,a表示指针的地址(其实*a就是一个整形数值)
取地址的值,例如 a=*b,其中b为一个地址。
简单的应用就这两个。
你所说的东西我给你解释一下:a[][],这是一个2维数组,这样a[0]表示第一行的首地址,a[1]就表示第2行的首地址。a[0]+1就表示第一行的首地址下面的一个地址,就是a[0][1]的地址。
任何一个数组,不管是几维的,a就表示整个数组的首地址,也就是你例子中的a[0][0]的地址。就如我上面所说的啊a[0]就是表示a[0][0]的地址。
你说的a[0]和*(a+0)等价,是针对1维数组而言的。
*(*(a+0)+1)表示a[0][1]这句是错的。*(a+0)+1表示a[0][0]+1是个数值,数值前面是不能加*的。楼主说的是对的。
三尺风声
2010-10-11
知道答主
回答量:31
采纳率:0%
帮助的人:0
展开全部
a[0]表示的是行地址
你可以去网上查查什么是行首地址 什么是元素地址

和之间的转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰火梦幻
2010-10-11 · TA获得超过2308个赞
知道小有建树答主
回答量:1095
采纳率:57%
帮助的人:428万
展开全部
a[0]表示a[0][0]的地址
没错。实际上,a、a[0]、&(a[0][0])的值都一样,是个地址,只是类型不同。
如果是int数组
a是int**,所以**a才等于a[0][0]
a[0]是int*,所以*(a[0])等于a[0][0]
&(a[0][0])也是int*,所以*(&a[0][0])等于a[0][0]

*(a+0)并不表示地址里的值。a的类型是int**,所以a+0的类型也是int**。所以*(a+0)是指a[0],而不是a[0][0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caizhongao
2010-10-11 · 超过16用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:41.7万
展开全部
你好;int *a[3]就相当于int[3][];所以a[0].a[1].a[2]分别代表第一行第二行第三行的首地址,a[0]=&a[0][0];a[1]=a[1][0];a[2]=a[2][0];
那么a[1][1]=*(a[1]+1)=*(*(a+1)+1)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式