读书人

c语言挟制转换求指导

发布时间: 2012-12-24 10:43:14 作者: rapoo

c语言强制转换,求指导
#include "stdio.h"
void main()
{
unsigned long *p;
p=(unsigned long *)0xe3000000;
unsigned char *q;
q=(unsigned char *)p;
printf("unsigned long p=%x\n",p);
printf("unsigned char q=%x\n",q);
}
为什么结果输出来的都是:0xe3000000
q的地址已经进行了强制转换,只能保存8位数据啊

这个是在linux系统下编译的
[最优解释]
。。。 清楚下地址和值的概念,地址长度是定长
[其他解释]
你打印的是指针,不是指针所指对象,这里的指针应该都是32位的
[其他解释]
地址来的,你强制转换的是指针指向的内容,而指针是4位的。。。p、q指向的地址一样的,建议你还是看看指针的知识
[其他解释]
32位系统下,指针变量本身的长度为4字节。
[其他解释]
汗 难道 sizeof(unsigned char*)==1
[其他解释]
p和q都是指针类型啊

读书人网 >C语言

热点推荐