C言語の基礎
int は4バイト、ポインタは8バイトとする。int 型へのポインタ p の値(番地)が 0x1000 のとき、p + 3 の値はどれか。
- A0x100C
- B0x1012
- C0x1018
答えと解説を見る
正解:A. 0x100C
ポインタに整数を足すと、指している型の大きさを単位として進みます。int は4バイトなので、p + 3 は 3 × 4 = 12 バイト先、つまり 0x1000 + 0xC = 0x100C を指します。p + 3 は配列の要素 p[3] の番地で、*(p + 3) と p[3] は同じ意味です。char 型へのポインタなら1バイトずつ、double 型(8バイト)へのポインタなら8バイトずつ進みます。
- A. 正しい。4バイトずつ3つ進むので、12 = 0xC を足します。
- B. 12バイトを16進数に直さずに「12」のまま足した値です。10進数の12は16進数では 0xC です。
- C. ポインタ自身の大きさ(8バイト)ずつ進むと考えた場合の値です(3 × 8 = 24 = 0x18)。