No.15248![]() |
2次元配列作成について 投稿者---array(2004/07/05 20:05:44) |
||
動的に2次元配列を作成したいと思い、以下のように配列を作る関数を用意しました。 【main.c】 int main() { ... int **Array; ... Create(**Array, 他の変数); ... Array を使った処理 ... } 【create.c】 int Create(int **Array, 他の変数) { /* 2次元配列を作成 */ Array = (int **)calloc(size, sizeof(int *)); ... /* 配列の初期化等の処理 */ ... } 【header.h】 int Create(int **Array, 他の変数); ... このようにすると、警告が出て 『警告:引数1個の'Create'を渡しますにより、キャストなしで整数からポインタを作りました』 と表示されます。 main関数内にCreate関数の処理をしてもいいのですが、プログラムが少し見にくくなるので何とか分けたいと考えております。 どのようにすれば警告が出ないかお分かりの方がいらっしゃいましたらアドバイスを宜しくお願いいたします。 |
No.15249![]() |
Re:2次元配列作成について 投稿者---REE(2004/07/05 20:21:28) |
||
>int **Array; >Create(**Array, 他の変数); これでは、関数にint型を渡すことになります。 以下の様に変更すべきです。 Create(&Array, 他の変数); 【create.c】 int Create(int ***Array, 他の変数) { /* 2次元配列を作成 */ *Array = (int **)calloc(size, sizeof(int *)); ... |
No.15250![]() |
ありがとうございました 投稿者---array(2004/07/05 21:18:08) |
||
REEさん 無事配列を作ることができました。 この後のプログラムは順調に作っていけそうです。 本当にありがとうございました。 |
No.15279![]() |
Re:2次元配列作成について 投稿者---array(2004/07/06 14:29:16) |
||
さらに質問させてください。 Create関数からさらにFunc関数にArrayを渡して処理をするときは 以下のようにすればよいのでしょうか? 【main.c】 int main() { Create(&Array, ...); ... } 【create.c】 int Create(int ***Array, ...) { ... Func(&(*Array), ...); ... } 【func.c】 int Func(int ***Array, ...) { for(i=0;...) for(j=0;...) (*Array)[i][j] = ...; } |
No.15281![]() |
Re:2次元配列作成について 投稿者---ニタチ(2004/07/06 14:48:51) |
||
>Create関数からさらにFunc関数にArrayを渡して処理をするときは >以下のようにすればよいのでしょうか? いいと思います。 > Func(&(*Array), ...); ここは、&(*Array) == &Array[0] == Array なので、 Func(Array, ...); でいいです。 |
No.15306![]() |
ありがとうございます 投稿者---array(2004/07/06 23:32:05) |
||
<pre> >Func(&(*Array), ...); >ここは、&(*Array) == &Array[0] == Array なので、 >Func(Array, ...); でいいです。 ニタチさん、ありがとうございます。 なるほどー。上のようにも書けるのですね。勉強になります。 </pre> |