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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zzt244 中级黑马   /  2015-12-29 11:37  /  1150 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

22.下列程序运行结果正确的是( )
int a[] = {1, 2, 3, 4, 5};
int *p = (int*)(&a + 1);
printf ("%d, %d\n", *(a+1), *(p-1));
A. 2,5      B. 2,1      C. 1,5     D. 1,2

7 个回复

正序浏览
FYJKL 中级黑马 2015-12-29 23:24:16
8#
选A吧,应该是
回复 使用道具 举报
yolande 中级黑马 2015-12-29 22:48:07
7#
int arr[2][2];
&arr+1 以数组大小加 相当于跳到了 第5个位置
&arr[0]+1以第一行大小加1 第3个位置
&arr[0][0]+1以一个元素为大小加1  第2个位置

arr+1 相当于&arr[0] +1
arr[0] + 1 相当于 arr[0][0] +1
arr[0][0] + 1  这个就是把那个变量的值加了1
回复 使用道具 举报
yolande 发表于 2015-12-29 12:44
p的地址是相当于a5的地址。。。然后在转变成int指针 -1就回到到a4

学习了,所有关于地址的,-1都会这样转换么?
回复 使用道具 举报
zzt244 来自手机 中级黑马 2015-12-29 19:07:37
报纸
yolande 发表于 2015-12-29 12:44
p的地址是相当于a5的地址。。。然后在转变成int指针 -1就回到到a4

&a就是a5???
回复 使用道具 举报

我需要解释...
回复 使用道具 举报
yolande 来自手机 中级黑马 2015-12-29 12:44:27
藤椅
p的地址是相当于a5的地址。。。然后在转变成int指针 -1就回到到a4
回复 使用道具 举报
A  刚用VS试了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马