#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