C語言:int型指針與char型指針本質


我的理解是,不管定義時將指針定義成何種類型,指針本質上都是一個數字,其位數由編譯器來決定。

比如我的編譯器是32位,那么無論是定義一個char *pc還是定義一個int *pi,本質上pc與pi都是一個32位的數,但是由於"char *" 和 "int *"的限制,所以pc++是自加8bit,而pi++是自加16bit。

 1 // int指針與char指針.cpp :
 2 // 看看“char型指針”與“int型指針”本質上有什么區別
 3 #include "stdio.h"
 4 int main(int argc, char* argv[])
 5 {
 6     char *pc;
 7     int *pi;
 8     ++pc;
 9     ++pi;
10     return 0;
11 }

通過單步調試來看pc與pi的變化:

 

 

通過單步調試可以發現,pc與pi初始化時都是0xcccc_cccc,經過自加后,pc增加了一個char型變量的大小(1字節),變為0xcccc_cccd;pi經過自加增加了一個int型變量的大小(4字節)。所以與我的猜想一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM