int a[5]={1,2,3,4,5}; int * ptr=(int *)(&a+1); 那个&a+1是哪个的指针地址?
4个回答
展开全部
int a[5]; 一个带有5个int空间的数组a
&a 是指变量a的地址
&a + 1 表示的是 跳过一个“a[5]"大小的空间后的地址,即:a[5]的最后一个元素的后面
&a 是指变量a的地址
&a + 1 表示的是 跳过一个“a[5]"大小的空间后的地址,即:a[5]的最后一个元素的后面
追问
我试过printf("%p,%p",a,&a)是相同的,但是&a+1为啥不是a[1]的指针,而是a[5]外的指针了
追答
如果从指针角度来说,
a表示一维指针
&a表示二维指针
但从数值上来说,它两个是一样的,因为a是数组
指针变量 做加1运算时,是按其地址中存储的数据类型进行地址位移计算的。
展开全部
&a是对a的引用,也可以说是a的地址,&a+1就是a的地址的下个地址,也就是数组中2的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-08-10
展开全部
数组a占据的空间后面的那个地址
&a+1,a是数组,&a+1就是 数组首地址+sizeof(a);
&a+1,a是数组,&a+1就是 数组首地址+sizeof(a);
追问
我试过printf("%p,%p",a,&a)是相同的,但是&a+1为啥不是a[1]的指针,而是a[5]外的指针了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a[5]表示a是一个有5个int型数据的数组,&a表示取a数组的地址,一维数组的地址是首个元素所在的地址,所以&a+1代表的是a这个数组本身在进行+1操作,即&a加了1个5个int型,跳到了a[5]后面的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询