大神求解_求解,不大懂是怎么输出的,希望有大神可以详细解答下过程
问题补充:
#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 提供
其他回答
暂无其它回答!