struct test{
    char* aaa;
    int bbb;
    long ccc;
    char ddd[10];
};
というような構造体があるとします。

これを
test* AAA = 0;
と宣言した時点でデータ領域は確保されているのでしょうか?

A 回答 (2件)

確保されません


変数AAAはあくまでstruct testをさす事のできるポインタのサイズしかありません

ポインタの先に実体を作りたい場合はmalloc(sizeof(test))なりしてやってメモリを確保してあげないと(ちゃんとしたOS下では)アクセス違反等が発生します
    • good
    • 0
この回答へのお礼

ありがとうございました。
やっぱりmallocしないと確保はされないんですね。

お礼日時:2001/02/07 10:40

ポインタはアドレスを格納する変数なのでデータ型に関係


なくサイズは一定です。

struct test* AAA;
だとtest型の構造体をあつかうポインタ変数になってしまいます。

領域を確保するならまず
struct test xxxx;
と書いて領域を確保してください。
(xxxxは適当な変数名にしてね)
alfeimのようにmalloc()を使ってもかまいません。
初心者であればとりあえずAUTO変数か静的変数で
領域を作ってみたほうが楽かと思います。

ポインタでアクセスしたいのならその後で
ポインタにアドレスを入れてください
AAA = &xxxx
    • good
    • 0
この回答へのお礼

どうも、ありがとうございました。
すっきりしました。

お礼日時:2001/02/07 10:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報