dポイントプレゼントキャンペーン実施中!

typedef struct tag{
int number;
char name[10];
struct tag *next;
}DATA;
という構造体があって、
DATA *p;
と宣言し、
p->next == NULL;
とすることはできないんですか?
セグメンテーション違反になってしまうのですが。
pが指すnextにNULLを入れるにはどうしたらいいのでしょうか?

A 回答 (1件)

>DATA *p;


>と宣言し、
これは、DATAという型のポインタ変数を定義しただけなので、メモリ上にDATA構造体はまだ存在しません。
なので、その後に、
p=(*DATA)malloc(sizeof(DATA));
などと書いてDATAの領域を確保してください。
また、確保した領域はゴミデータが入っている場合があるので初期化を忘れずに。

>p->next == NULL;
これ(==)は代入ではなくて比較演算子です。
p->next = NULL;
と、代入してやってください。

あと、pがいらなくなったらfree()しないとメモリーリークします。
と、してください。
    • good
    • 0
この回答へのお礼

なるほど!領域を確保しなければいけなかったんですね。理由が分かりました。
(==)の初歩的なミスまでして恥ずかしい限りです。
素早い回答大変ありがとうございました。

お礼日時:2009/02/22 20:59

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

このQ&Aを見た人はこんなQ&Aも見ています