tec memo

メモです。

C言語: メモリーのアドレスを知る。

変数が格納されている、メモリ上のアドレスを知るには 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バイトであるため。