C言語のポインタ
ポインタ理解しようとがんばってます。
以下がなぜかエラー(bus error)になる。
#include <stdio.h> main(int argc, char *argv[]) { int a[10]; int *p; a[0] = 1; *p = 1; /* pの指す先に1を指定、なはず */ //p = 1; /* これはアドレスとして1を指定するのでおかしい */ printf("%d\n%d\n", a[0], *p); }
んで色々ためしたら、
int i = 1; int *p; p = &i; *p = 2;
とやるとokっぽい。
これはint *pだけじゃpの指すさきが確保されてないってことなのかな。
だから確保されていない場所に格納しようとするとエラーがでると。
p = &i;
の部分で指す場所がiになり、iはint i = 1;で確保されているので格納できるようになる。
ポインタおもしろいな。