アドレスを格納する変数の使い方を学ぼう。よくわかるC p.78の例題拡張
<例題> #include <stdio.h> int main(void) { int *p; /* 変数pはアドレス。そのアドレスにはintが格納 */ int x; p = &x; /* pに変数x のアドレスを代入 */ x = 5; /* 変数xの領域に、5をセット */ printf("x = %d\n", x); printf("p = %p\n", p); /* アドレスを16進数で表示 */ printf("変数xのアドレス = %p\n", &x); printf("pが指すアドレスの実体 = %d\n", *p); /* 参照 */ *p = 10; /* 代入 */ printf("x = %d\n", x); /* xの値が変化してしまう */ return 0; }
変数xや変数pについて、メモリ上の絵を描いてみよう
<問題>
<コメント>
<例題> #include <stdio.h> int main(void) { int *p; /* 変数pはアドレス。そのアドレスにはintが格納 */ int x; p = &x; /* pに変数x のアドレスを代入 */ x = 5; /* 変数xの領域に、5をセット */ printf("x = %d\n", x); printf("p = %p\n", p); /* アドレスを16進数で表示 */ printf("変数xのアドレス = %p\n", &x); printf("pが指すアドレスの実体 = %d\n", *p); /* 参照 */ *p = 10; /* 代入 */ printf("x = %d\n", x); /* xの値が変化してしまう */ *p = 20; /* このあと、いろいろとプリントして確認しよう */ return 0; }