在C 中遞增Int 指標:揭開4 位元組增量的面紗
在C 中,指針算術規則規定遞增int指標的結果以4 個位元組增量,而不是預期的1 個位元組增量。這種差異讓許多程式設計師感到困惑,導致了以下問題:
問:為什麼 int 指標 ' ' 增加 4 而不是 1?
答: int 指標增加 4 個位元組與其所指向的資料型別的大小有關。每個 int 變數佔用 4 個位元組的內存,因此遞增 int 指標會將指標移到下一個 int,該指標位於記憶體中 4 個位元組之外。
測試程式碼:
int a = 1, *ptr; ptr = &a; printf("%p\n", ptr); ptr++; printf("%p\n", ptr);
預期輸出:
0xBF8D63B8 0xBF8D63B9
>
0xBF8D63B8 0xBF8D63BC
附加問題:單獨存取Int 位元組
問:如何存取一個int 佔用的4 個位元組one?
A: 要存取int 的各個位元組,可以將int指針轉換為 char 指針,其大小為 1 個位元組。然後,您可以增加 char 指標以瀏覽 int 的位元組。
範例:
int i = 0; int* p = &i; char* c = (char*)p; char x = c[1]; // one byte into an int
以上是為什麼C語言中整數指標遞增會增加4個位元組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!