変数が格納されている、メモリ上のアドレスを知るには printf
に %p
で表示できる。
変数には、&
をつける。配列のアドレスを知りたい場合は、&
は不要。
#include <stdio.h> int main(void) { int i1, i2, i3; printf("i1(%p)\n", &i1); printf("i2(%p)\n", &i2); printf("i3(%p)\n", &i3); int array[10]; printf("array___(%p)\n", array); printf("array[0](%p)\n", &array[0]); printf("array[1](%p)\n", &array[1]); printf("array[2](%p)\n", &array[2]); return 0; }
コンパイル後、実行結果。
# ./a.out i1(0x7fff510de818) i2(0x7fff510de814) i3(0x7fff510de810) array___(0x7fff510de820) array[0](0x7fff510de820) array[1](0x7fff510de824) array[2](0x7fff510de828)
10進数にすると、4バイトで区切られていることがわかる。
これは、int型が4バイトであるため。
コメント