首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

下面的如何解释

2012-03-06 
下面的怎么解释char*ps0int*pi0short*ph0ps++intn(int)psn?pi++intn(int)pin?ph++intn(int)p

下面的怎么解释
char     *ps=0;
int       *pi=0;
short   *ph=0;
ps++     int   n=(int)ps;
                    n=?
pi++     int   n=(int)pi;
                    n=?
ph++     int   n=(int)ph;
                      n=?

[解决办法]
segmentation fault
[解决办法]
1
4
2
[解决办法]
开始三个指针的内容都是0
ps++,使得指向地址为0x1的内存,因为ps是字符指针,每个字符占一个字节,你把这个地址0x1强制转换成整型,所以n = 1
pi++,使得指向地址为0x4的内存,因为ps是整型指针,每个整型变量占四个字节,你把这个地址0x4强制转换成整型,所以n = 4
ph++,使得指向地址为0x2的内存,因为ps是short短整型指针,每个短整型占两个字节,你把这个地址0x2强制转换成整型,所以n = 2
另外类型所占的字节数与机器平台有关,32位机一般是这样,64位则不同的值,但原理上一样
[解决办法]
char is 1 byte
int is 4 byte
short is 2 byte

热点排行