我的理解是,不管定義時將指針定義成何種類型,指針本質上都是一個數字,其位數由編譯器來決定。
比如我的編譯器是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字節)。所以與我的猜想一致。