#include<stdio.h> int main() { int a = 0x12345678; char *pc = &a; printf("%x",*pc); char c = 'a'; int *pi = &c; printf("%x",*pi); }
先看第一段。
char *指向的地址空间的变量类型是char型的,char型是1个字节的。
但a却是int型的,4个字节。所以*pc只能取到int内里的1/4内容。
但输出*pc是什么呢?是78还是12?
这要看大小端的问题。
假如大端是:
4g
|
| 78
| 56
| 34
|12 <-----指针
0|
小端是:
4g
|
|12
|34
|56
|78 <-----指针
0|
小端输出78
大端输出12
x86是小端的。
第二段:
int *指向的地址空间的变量类型是int型的,int型是4个字节的。
但c却是char型的,1个字节。所以*pi包含c的内容,又包含别的内容,是随机值。
输出的*pi = 0x34567861
包含c = ‘a’ = 0x61