首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

结果为什么是5

2013-09-09 
结果为啥是5?[解决办法]&a是取数组的地址, 对应类型为int (*a)[5], 指向数组的指针, +1偏移int[5]的地址。[

结果为啥是5?

                                                                            
[解决办法]
&a是取数组的地址, 对应类型为int (*a)[5], 指向数组的指针, +1偏移int[5]的地址。
[解决办法]

int *ptr = (int *)(&a +1);
//这句话相当于移动了 5个int的位置的
// (&a+1); 以int a[5]位单位的向前移动的意思
//操作完后ptr指向 a[5]了,

ptr -1 ;//指向a[4];输出5

[解决办法]
a是以5个元素大小为单位的 &a +1 就等于加了一个单位  指针也就移向了整个数组的后面
[解决办法]
这是一个面试题吧。。。
 int *ptr = (int *)(&a +1);
执行完这条语句之后,p指针指向数组a末尾元素的下一个位置,a是数组名,是一个常量指针,&a可以看做是一个二维指针,&a+1指向数组a末尾元素的下一个位置,也可以看做是一个二维指针,所以需要(int *),强制类型转换。

热点排行