プロが教えるわが家の防犯対策術!

main関数でポインタや構造体などを宣言し、
それをそれぞれ初期化関数を使ってmallocしたいのですが、
どうしてもエラーが出てしまいます。

例えばこのような感じです。


//呼び出し元

long *t;

t = Init_t(n, t);



//初期化関数

t = (long*)malloc(sizeof(long) * n);
・・・
return t;


とやると、t = Init_t(cpm.n, t); のところで
variable "t" is used before its value is set
とエラーが出ます。
エラーが出る理由も分かるのですが、
どのようにエラーが出ない初期化関数を書けばよいのか分かりません。
あまりmalloc等を使うプログラムを書いたことがなかったので、
様式美のようなものも分かりません。
お願いします。

A 回答 (2件)

Init_t()のプロトタイプも書きましょう。



どうやらlong *Init_t(int n, long *t)のようですが、第二引数は不要というか無意味ですね。
long *Init_t(int n)で十分でしょう。
あくまでtを渡すならvoid Init_t(int n, long **t)辺りで。
    • good
    • 0
この回答へのお礼

解決しました!
ありがとうございました。

お礼日時:2008/12/02 12:46

//呼び出し元



long *t;

t = Init_t(n);



//初期化関数

long *u = (long*)malloc(sizeof(long) * n);
・・・
return u;


ということかい?
    • good
    • 0
この回答へのお礼

解決しました!
ありがとうございました。

お礼日時:2008/12/02 12:47

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