请大神帮我理解下这个问题,假设一个二维的数组int a[2][3]={(1,2,3),(4,5,6)}; int(*b)[3]=a; 为什么

可以用*(b+1)+2;来代表第1行第2列的元素地址呢?加*的不是应该是值吗?为什么又变成了地址呢?怎么理解这种*... 可以用*(b+1)+2;来代表第1行第2列的元素地址呢? 加*的不是应该是值吗?为什么又变成了地址呢?怎么理解这种* 展开
 我来答
弑绯
2016-07-28 · TA获得超过2500个赞
知道小有建树答主
回答量:893
采纳率:75%
帮助的人:723万
展开全部
  1. 因为a本身就是指针,它指向的是数组的第一个元素的地址,也可以说是这个素组的首地址。这里的b指向的是一个指针,也就是说,这个指针b保存的内容是a这个指针的地址。你说加*应该是值没错,但是这个值是a这个指针的地址,而不是a这个指针对应的地址所保存的值。

  2. 你要分清楚定义时*的作用,和单独拿出来时候的作用,定义的时候,比如int *b,这里的*单纯是只是为了让编译器知道,这里定义的b是一个指针。而后面单独拿出来用的*b,则是说b这个指针所指地址保存的内容

xiaosa380
2016-07-28 · TA获得超过756个赞
知道小有建树答主
回答量:1466
采纳率:33%
帮助的人:264万
展开全部
因为这里b是二级指针。二级指针指向的是一级指针的地址,一级指针指向的是数组中元素的地址,所以 *(一级指针) = 数组中的元素值。 *(二级指针) = 一级指针的地址值
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式