int a[5]={1,2,3,4,5}; int * ptr=(int *)(&a+1); 那个&a+1是哪个的指针地址?

 我来答
kaixingui2012
2014-08-10 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6294万
展开全部
int a[5]; 一个带有5个int空间的数组a

&a 是指变量a的地址

&a + 1 表示的是 跳过一个“a[5]"大小的空间后的地址,即:a[5]的最后一个元素的后面
追问
我试过printf("%p,%p",a,&a)是相同的,但是&a+1为啥不是a[1]的指针,而是a[5]外的指针了
追答
如果从指针角度来说,
a表示一维指针
&a表示二维指针
但从数值上来说,它两个是一样的,因为a是数组

指针变量 做加1运算时,是按其地址中存储的数据类型进行地址位移计算的。
手果影1G
2014-08-10
知道答主
回答量:8
采纳率:0%
帮助的人:5.1万
展开全部
&a是对a的引用,也可以说是a的地址,&a+1就是a的地址的下个地址,也就是数组中2的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-08-10
展开全部
数组a占据的空间后面的那个地址
&a+1,a是数组,&a+1就是 数组首地址+sizeof(a);
追问
我试过printf("%p,%p",a,&a)是相同的,但是&a+1为啥不是a[1]的指针,而是a[5]外的指针了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上帝吻了她
2021-07-25 · TA获得超过145个赞
知道答主
回答量:22
采纳率:0%
帮助的人:2.7万
展开全部
int a[5]表示a是一个有5个int型数据的数组,&a表示取a数组的地址,一维数组的地址是首个元素所在的地址,所以&a+1代表的是a这个数组本身在进行+1操作,即&a加了1个5个int型,跳到了a[5]后面的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式