*(a+i)与a[i]与(a+i)是一样的地址,为什么? 10

我知道没错,但我不理解为什么*(a+i)也是地址,而不是指针所指的变量值呢?对于*(a+i)中a表示&a[0][0],所以a+1就代表&[1][0],在加个*,明明就是个... 我知道没错,但我不理解为什么*(a+i)也是地址,而不是指针所指的变量值呢?对于*(a+i)中a表示&a[0][0],所以a+1就代表&[1][0],在加个*,明明就是个值吗 求求各位大哥,好好给我解释一下吧!
1楼的大哥,可能是我没说清楚,对不起啊!
我指的是二维数组,int a[3][4];
对于二维数组,数组名a确实表示&a[0][0],这个绝对没有错
你再好好替我想想呗,谢谢你啊!
展开
 我来答
fangcong920
2009-08-10 · 超过13用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:24.9万
展开全部
呵呵,你错了,对于数组a[i],a表示该数组的起始地址,即a=&a[0], 所以 *(a+i)表示a+i指向的数组元素,*(a+i)=a[i]。

对于二维数组,&a[0][0]就不能用a表示了,而是用a[0]+0表示,二维数组可以看成一维数组,不过它的每一个数组元素又是一个一维数组,比如a[3][4]的第一行元素a[0][0],a[0][1],a[0][2],a[0][3]可以看成是一维数组a[0]的4个元素,即把a[0]看成一个数组名。故二维数组a[i][j]的地址可以表示成a[i]+j或
*(a+i)+j。再懂了吧。
冀来福凤燕
2019-08-08 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:27%
帮助的人:861万
展开全部
*(a+i)与a[i]是一样的地址应该是说他们指向的都是同一个内存单元,也就是说*(a+i)指向的值的地址,与a[i]指向的值的地址都是一样的。也就是说他们得到的值是一样的。
这里不是说他们得到的是一个内存变量的地址还是内存变量的值,只是说明他们是一样的,得到的值一样,换句话说就是一样的地址。(一样的地址难道值会布一样??)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓟精雀安琪
2019-05-16 · TA获得超过1107个赞
知道小有建树答主
回答量:1804
采纳率:100%
帮助的人:8.5万
展开全部
不是的,给*p赋值,并不是直接赋给它数值,而是赋给他一个地址,比如说:*p=&i,那么就给*p赋给了i的内存地址,系统在读取到内存地址之后再读出该内存所存的数值,而*p的内存地址等于i的内存地址,所以*p的数值与i的数值是一样的,虽然
在赋值语句之后,*p等价于i,
但是不能说直接把数值赋了*p。*p=&i的含义是变量i的地址作为一个数据存放在指针变量p所对应的内存单元中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宏郁米含灵
2019-10-13 · TA获得超过1224个赞
知道小有建树答主
回答量:1712
采纳率:92%
帮助的人:9.2万
展开全部
这么说吧,*(a+i)与这个地址存的参数等效,*的意思是根据指针这个地址调出这个地址上的值。那么,说是地址也没有错,只能说不是很严谨。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匡逸完玉韵
2019-11-17 · TA获得超过1057个赞
知道小有建树答主
回答量:1834
采纳率:100%
帮助的人:8.6万
展开全部
你内个说法有点错误
c++
二维数组
指针中
a+i
表示数组a的第i行第0列元素的地址
*(a+i)表示数组a的第i行第0列元素的值
估计你内个是书上印错了,教科书各种错,例题代码也各种错,你得自己根据定义去理解,它只是说个大概意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式