まぬねこの足跡。。。

備忘録+たのしさ+ひっそりと

C言語 アドレス

変数アドレスを表現

&変数
ちょこっとメモ

値渡し(浅いコピー)

変数を別メモリにコピーして、渡す。
渡された変数をの中身を変更しても元の変数の中身は変わらない。

参照渡し(深いコピー)

変数のアドレスを渡すことで、変数の実体を操作できる。
渡された変数をの中身を変更すると元の変数の中身は変わってしまう。

変数アドレス 表示

「%p」変換指定子を指定。

int i;
printf("%p\n", &i);

表示イメージ

0x7ffe23eb1f54

配列変数のアドレス 表示

int A[10];
printf("A = %p\n", A);
printf("A[0] = %p\n", &A[0]);
printf("A[1] = %p\n", &A[1]);
printf("A[2] = %p\n", &A[2]);

表示イメージ

A = 0x7ffda49e8390 ←配列の先頭アドレス
A[0] = 0x7ffda49e8390 ←先頭のアドレスと同一
A[1] = 0x7ffda49e8394 ←以降4(バイト)ずつずれる
A[2] = 0x7ffda49e8398