C指针特性
C在使用指針的時候,打印不同類型,得出的數(shù)據(jù)往往是一部分,下面通過一段代碼來展示(頭文件略)
代碼
int main(void) {int a = 0x12345678; //定義整型類16進(jìn)制數(shù)int *p = &a; //int型指針printf("%x\n", *p);char *p2 = (char*)&a; //char類型printf("%x\n", *p2);short *p3 = (short*)&a; //short類型printf("%x\n", *p3);return 0; }我們得到如下結(jié)果
12345678 78 5678發(fā)現(xiàn)三次打印結(jié)果不同(后兩次僅是片段),為什么會這樣呢?
首先我們要了解一下大小端,這跟你的處理器有關(guān)系
處理器
- 大端
- 小端
ARM/Intel,數(shù)據(jù)有由高位向低位讀取
至于儲存位置我們下面用一張圖表示
儲存位置
讀取數(shù)據(jù)時有高位向低位,又因為十六進(jìn)制,1位相當(dāng)于4位二進(jìn)制數(shù)。
所以我們通過p指針時,目標(biāo)和指針類型相同,所以可以全部打印
然而char類型,只能讀取78
short類型只能讀取7856
我們在使用指針時要十分注意!
總結(jié)
- 上一篇: HTML内嵌式CSS背景图填充满无截断重
- 下一篇: 使用Visual Studio 2019