-PR-
解決済み

structをポインタ宣言時の領域

  • すぐに回答を!
  • 質問No.37136
  • 閲覧数123
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 95% (20/21)

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

これを
test* AAA = 0;
と宣言した時点でデータ領域は確保されているのでしょうか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 58% (114/195)

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

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

お礼率 95% (20/21)

ありがとうございました。
やっぱりmallocしないと確保はされないんですね。
投稿日時 - 2001-02-07 10:40:32
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル10

ベストアンサー率 17% (31/179)

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

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

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

ポインタでアクセスしたいのならその後で
ポインタにアドレスを入れてください
AAA = &xxxx
お礼コメント
matthaus

お礼率 95% (20/21)

どうも、ありがとうございました。
すっきりしました。
投稿日時 - 2001-02-07 10:38:30


このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ