A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jusive 中级黑马   /  2015-10-2 12:35  /  1125 人查看  /  15 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

#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;
//整个数组的指针与数组元素的指针的区别
}

15 个回复

倒序浏览
这个题的结果为:3,8,因为数组的指针指的时二级指针,数组元素的指针是一级指针
回复 使用道具 举报
学习一下
回复 使用道具 举报
前来学习一下
回复 使用道具 举报
学习一下,面试还是有点压力的
回复 使用道具 举报
谁在放荡 来自手机 中级黑马 2015-11-8 22:10:38
地板
学习一下,有收获
回复 使用道具 举报
学习了,学习了
回复 使用道具 举报
学习一下!!!!
回复 使用道具 举报
要验证数组的指针与数组元素的指针的区别 P不是+1? p-1有什么意义.
回复 使用道具 举报
来看大神解答!
回复 使用道具 举报
有答案详解公布没有
回复 使用道具 举报
3,8  正如注释所写的,&a是一个二级的地址,&a+1移动的是整个数组的长度。所以p指向了a+4,尽管这个地址并不属于数组,但是p确实是指向了这个地址,最后输出时,p—1又指向了a[3],所以输出应该是 3,8
回复 使用道具 举报
原来如此
回复 使用道具 举报
谁在放荡 来自手机 中级黑马 2015-11-9 13:48:37
14#
已经学习了,很不错
回复 使用道具 举报
知道第一个是3,但是后面不懂为什么是8,原来数组加一是移动一个数组的长度!!
回复 使用道具 举报
我是来听课的  大神好厉害的啊  加油  快开班了 好紧张啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马