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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙明海 中级黑马   /  2015-10-26 22:28  /  2334 人查看  /  28 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>
int main(){
    int a[]={1,2,3,4,5};
    int *p=(int *)(&a+1);
    printf("%d,%d\n",*(a+1),*(p-1));
    return 0;
}
2,5

28 个回复

倒序浏览
a再取地址,相当于指针的指针,它加一的跨度就变成a数组的大小了
回复 使用道具 举报
从哪看的, 不理解啊, 求解释
回复 使用道具 举报
学习 学习.ios  以后留着用
回复 使用道具 举报
顶 ......................
回复 使用道具 举报
顶一下  我也在学习这个题目
回复 使用道具 举报
jin jian``````
回复 使用道具 举报
怎么看不懂
回复 使用道具 举报
wangchao1992 发表于 2015-10-27 20:15
从哪看的, 不理解啊, 求解释

*p=(int *)(&a+1);&a表示数组的指针 &a+1指针向高位移动sizeof(a)个字节,(int *)(&a+1)将数组指针强转为int型指针.*(p-1)表示将指针向低位移动一个4个字节取值 指针刚好移动到a[4]的地址 取值等于a[4]=5
回复 使用道具 举报

*p=(int *)(&a+1);&a表示数组的指针 &a+1指针向高位移动sizeof(a)个字节,(int *)(&a+1)将数组指针强转为int型指针.*(p-1)表示将指针向低位移动一个4个字节取值 指针刚好移动到a[4]的地址 取值等于a[4]=5
回复 使用道具 举报
ccwinner 发表于 2015-10-27 17:18
a再取地址,相当于指针的指针,它加一的跨度就变成a数组的大小了

恭喜你答对了
回复 使用道具 举报
ccwinner 发表于 2015-10-27 17:18
a再取地址,相当于指针的指针,它加一的跨度就变成a数组的大小了

恭喜你答对了
回复 使用道具 举报
加油 慢慢来吧
回复 使用道具 举报
菜鸟adambo 发表于 2015-10-27 21:03
学习 学习.ios  以后留着用

我也是留着以后看的
回复 使用道具 举报
学习了{:2_40:}
回复 使用道具 举报
p495416980 来自手机 中级黑马 2015-10-29 08:56:37
16#
学习了,指针问题需要思路清晰
回复 使用道具 举报
好像很厉害的样子,留着
回复 使用道具 举报
zyios 中级黑马 2015-10-29 10:38:09
18#
不确定答案,求解释
回复 使用道具 举报
a 是一维数组的首地址,&a就变成了二维数组中第一行数组的首地址了,那么&a+1 ,是二维数组中第二行的首地址,不管一维还是二维,数组的地址都是连续的

无标题.png (88.24 KB, 下载次数: 106)

无标题.png
回复 使用道具 举报
楼上分析的比较明白,学习学习
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马