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* ポインターを使用して一度に 1 バイトずつ増加し、整数の対応するバイトにアクセスできます。
例:
int i = 0; int* p = &i; char* c = (char*)p; char x = c[1]; // access the second byte of the integer
追記:
です。 void は不完全な型であり、サイズが定義されていないため、void* ポインターのインクリメントは許可されていないことを覚えておくことが重要です。
以上が整数ポインターをインクリメントすると、1 バイトではなく 4 バイトが追加されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。