遞增 Int 指標:為什麼要遞增 4 位元組?
使用指標時,可能會直觀地期望遞增一個int 指標會將其值增加 1 個位元組,就像陣列一樣。然而,在實務上,遞增 int 指標實際上會使其值增加 4 個位元組。
增加 4 個位元組的原因
這種行為的原因在於整數資料型別的大小。 int 通常佔用 4 個位元組的記憶體。如果 int 指標只遞增 1 個位元組,則會導致指向部分整數,這是無意義的。
理解指標增量
到為了說明這一點,請考慮以下記憶體表示:
[...| 0 1 2 3 | 0 1 2 3 | ...] [...| int | int | ...]
這裡,每個int 佔用4個位元組。當 int 指標遞增 1 時,邏輯上它會移動到下一個 4 位元組部分,如下所示:
[↓ ] [...| 0 1 2 3 | 0 1 2 3 | ...] [...| int | int | ...]
這可確保指標繼續指向有效的整數。
存取各個位元組
如果需要存取某個位元組的各個位元組整數,您可以使用 char 指標。由於 char 的大小始終為 1 個位元組,因此您可以使用 char* 指標每次遞增一個位元組並存取整數的相應位元組。
範例:
int i = 0; int* p = &i; char* c = (char*)p; char x = c[1]; // access the second byte of the integer
附加說明:
重要的是請記住,不允許遞增void*指針,因為void 是不完整型別且沒有定義的大小。
以上是為什麼遞增整數指標會增加 4 個位元組而不是 1 個位元組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!