アットウィキロゴ
とある本を呼んでいて、構造体をポインタで宣言して構造体内で

宣言されている変数に値を代入するときにアロー演算子を使っていた。

それを見て、私は以下のようなことが安直にできると思ってしまった。

例)
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