黑马程序员技术交流社区

标题: 面试题 [打印本页]

作者: Jusive    时间: 2015-10-2 12:35
标题: 面试题
#include<stdio.h>
int main(){
int a[]={1,3,5,8};
int *p=(int*)(&a+1);//移动的是数组的长度
printf("%d,%d\n",*(a+1),*(p-1));
    return 0;
//整个数组的指针与数组元素的指针的区别
}
作者: 超の    时间: 2015-10-2 16:57
这个题的结果为:3,8,因为数组的指针指的时二级指针,数组元素的指针是一级指针
作者: findwhy    时间: 2015-11-5 13:05
学习一下
作者: poxiao    时间: 2015-11-8 20:55
前来学习一下
作者: 强强ios    时间: 2015-11-8 21:32
学习一下,面试还是有点压力的
作者: 谁在放荡    时间: 2015-11-8 22:10
学习一下,有收获
作者: 大雕会飞    时间: 2015-11-8 22:13
学习了,学习了
作者: 王世杰    时间: 2015-11-8 22:17
学习一下!!!!
作者: toveyloves    时间: 2015-11-9 00:19
要验证数组的指针与数组元素的指针的区别 P不是+1? p-1有什么意义.
作者: 吴永涛    时间: 2015-11-9 00:37
来看大神解答!
作者: 许本亮    时间: 2015-11-9 09:22
有答案详解公布没有
作者: black747521    时间: 2015-11-9 10:35
3,8  正如注释所写的,&a是一个二级的地址,&a+1移动的是整个数组的长度。所以p指向了a+4,尽管这个地址并不属于数组,但是p确实是指向了这个地址,最后输出时,p—1又指向了a[3],所以输出应该是 3,8
作者: zhecipinle    时间: 2015-11-9 12:12
原来如此
作者: 谁在放荡    时间: 2015-11-9 13:48
已经学习了,很不错
作者: 伍陶陶    时间: 2015-11-9 15:43
知道第一个是3,但是后面不懂为什么是8,原来数组加一是移动一个数组的长度!!
作者: 649685603    时间: 2015-11-9 16:16
我是来听课的  大神好厉害的啊  加油  快开班了 好紧张啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2