ポインタの参照渡しを行い、2日ほど足踏みしている状態で
もうどうにもわからないので、質問します。
以下にサンプルコードを書きます。
=================================================== 1. 普通に動くもの =================================================== --------------------------------------------------- main [概要] aの配列を hoge関数に参照渡しを行い aの配列に値を代入する。 要素は「5」個とする。 --------------------------------------------------- int main(void) { int a[5]; hoge(a); return 0; } --------------------------------------------------- hoge --------------------------------------------------- void hoge(int *a) { int i; for (i = 0; i < 5; i++) { a = i; } } /// ends =================================================== 2. 質問(動かないもの) =================================================== --------------------------------------------------- main [概要] aの配列を hoge関数に参照渡しを行い aの配列に値を代入する。 要素は決まっていない。 --------------------------------------------------- int main(void) { int a[1]; hoge(a); return 0; } --------------------------------------------------- hoge --------------------------------------------------- void hoge(int *a) { int i; int *buf; int total = 0; // 要素生成 a = (int *)malloc(sizeof(int) * 1); // 999 になるまで繰り返す for (i = 0; total <= 999; i++) { // 実際は「i」ではなく、キーボードからの入力値になります。 a = i // 合計に加算 total += tensuu; if (total <= 999) { // 要素生成 buf = (int *)realloc(a,sizeof(int) * i + 2); if (buf == NULL) { exit(0); } a = buf; } } } /// ends
かなり醜くて申し訳ありません。。。
参照渡しを行い、値を設定し戻してくれるものだと思っていたのですが
「malloc」, 「realloc」を使用すると、どうもうまくいきません。
使い方がダメなのでしょうか。。
すみません。どなたか。。。どなたかご教授いただけないでしょうか。
