大神求解_求解,不大懂是怎么输出的,希望有大神可以详细解答下过程

原问题:求解,不大懂是怎么输出的,希望有大神可以详细解答下过程
分类:编程开发 > 最后更新时间:【2017-02-21 23:20:21】
问题补充:

#include<stdio.h>

int main(int argc, const char *argv[])

{

int a[5]={1,2,3,4,5};

int *s=(int *) ((int)a+1);

printf("0 %x\n",*s);

return 0;

}

补充:主要是(int *) ((int)a+1);这一句话

最佳答案

(int *) ((int)a+1);用的是强制类型转换

将a(它是一个指针,也是一个地址)强制转化为整形的,然后加1

再强制转化为整形指针,然后输出

因为a的内存的内容为

01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00

所以s最终指向的是01后面的0

*s最终的内存内容为 00 00 00 02

因为C的int是低位在前的,所以*s最终输出为

2000000

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
7

分享到:

其他回答

暂无其它回答!