C语言整型转换成字符后,地址的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 01:52:12
int i=97;
char *p;
p=(char *)&i;
输出S[0]是a,
整形是四个字节,字符类型的是一个字节,强制转换后指针p指向i的第一个字节,请问分别指向另外三个字节的s[1],s[2],s[3]各是什么?各位C语言高手帮忙看看啊!小弟先行谢过!

WINDOWS内存,低位存放于低字节,高位存放于高字节。
所以int i =97;在内存中的存放形式如 0x61000000
所以s[1],s[2],s[3]全是0;
#include <stdio.h>
main()
{
int i=97;
char *p=(char*)&i;
printf("%d %d %d %d",*p,*(p+1),*(p+2),*(p+3));
}

这类问题最好的办法就是上机实验,打印出来看一下。
main()
{
int i=97;
char *p;
p=(char *)&i;
printf("%d,%d,%d,%d",*p,*(p+1),*(p+2),*(p+3));
}
我运行的结果是:97,0,-16,-1
是按四个字节实验的,不过貌似int整型只有两个字节,楼主应该是记错了。结果中的97,0是正确的,后边的部分没有意义。