因?yàn)镃的變量地址是變量低字節(jié)的地址,不同的數(shù)據(jù)類型有不同的字節(jié) 。
64位下: int 4 char 1
如果指定的類型不相同:
int c= 2;
char a = 1;
int *p = &a;
printf("%d",*p); // 513
結(jié)果是因?yàn)?c的變量先定義那么c的地址高于 a的地址
c地址 : 0000 0000 &c
0000 0000
0000 0000
0000 0010
a地址: 0000 0001
如果 指針p 為int 那么a取值就是:
0000 0000
0000 0000
0000 0010
0000 0001
即: 0000 0000 0000 0000 0000 0010 0000 0001 --> 513。
編譯器在 通過*p來操作變量的存儲(chǔ)空間的時(shí)候是按照 指針指向的類型來決定存儲(chǔ)的字節(jié)數(shù)的 ,如果字節(jié)不對(duì),那么數(shù)據(jù)的存儲(chǔ)就會(huì)不同。