とある本を呼んでいて、構造体をポインタで宣言して構造体内で
宣言されている変数に値を代入するときにアロー演算子を使っていた。
それを見て、私は以下のようなことが安直にできると思ってしまった。
例)
struct AAA {
int aaa;
};
int main(){
struct AAA *a;
a->aaa = 0;
}
しかし、これは不正なメモリ参照としてエラーをはかれてしまう。
これはポインタを宣言しただけで、実際のデータが入る領域がきちんと
確保できていないかららしい。
つまり、上のは
例:mallocで確保
struct AAA {
int aaa;
};
int main(){
struct AAA *a;
a = malloc(10);
a->aaa = 0;
}
とか
例:同じ構造体の普通のやつ作って移す
struct AAA {
int aaa;
};
int main(){
struct AAA *a,b;
a = &b;
a->aaa = 0;
}
みたいにしないといけない。
ポインタを宣言したら、メモリとそれを指し示す先頭アドレスが同時に確保
されると完璧に思っていた・・・。
勉強不足だな・・・。
最終更新:2010年08月26日 01:27