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