int ポインタのインクリメントがアドレスに 4 バイト影響する理由
C プログラミングでは、int ポインタの値が 1 ずつインクリメントされると、予想される 1 バイトではなく 4 バイト増加します。これは、ポインタ変数には変数のメモリ アドレスが格納され、ほとんどのアーキテクチャでは整数のサイズが 4 バイトであるためです。
ポインタを 1 増やすとアドレスが 4 増える
int ポインタが 1 ずつインクリメントされるとき、ポインタは 1 バイトのサイズだけ移動しません (これはサイズです)キャラクターの)。代わりに、それが指すデータ型 (この場合は int) のサイズだけ移動します。これは、ほとんどのアーキテクチャでは 4 バイトです。
4 によるアドレス増加の正当性
この増加の理由は、データにアクセスするときに適切な位置合わせを維持するためです。 4 バイトずつインクリメントすると、ポインタは常に int 値を保持できるメモリ位置の先頭を指すようになります。ポインタが 1 バイトだけ増加した場合、正しく位置合わせされていないメモリ位置を指す可能性があり、エラーや予期しない動作が発生する可能性があります。
int の 4 バイトの参照
int の 4 バイトに 1 つずつアクセスする必要がある場合は、int ポインタをキャストできます。 char ポインターを使用し、配列インデックスを使用します。 int の各バイトは、char 配列の要素としてアクセスできます。
例:
int a = 1; int *ptr = &a; char *cptr = (char *)ptr; for (int i = 0; i < sizeof(int); i++) { printf("%d\n", cptr[i]); }
これは、 の 4 バイトを 1 つずつ出力します。として:
1 0 0 0
以上がC で整数ポインターをインクリメントすると、アドレスが 4 バイト増加するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。