下面的怎么解释
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