ページ 11

不完全要素型の解決法

Posted: 2014年7月18日(金) 14:52
by aquashooting
aquashootingです。学校の課題でQ学習に関するサンプルプログラムを製作しているのですが、配列や関数を定義する際、どうしても「配列の型が不完全要素を持っています」と表示されてしまいます。
下がそのコードの一部です。

コード:

int policy(int x, int y, int s, int num_a, int maze[ ][ ], int qtable[ ][ ]);
int max_qval(int s, int num_a, int qtable[ ][ ]);
int select_action(int s, int num_a, int qtable[ ][ ]);
問題は関数の引数にあるmaze・qtable配列をどう定義すれば不完全要素をまぬがれるのか
教えて欲しいのです。

Re: 不完全要素型の解決法

Posted: 2014年7月18日(金) 16:00
by usao
それら関数の引数 mazeやqtable に渡す配列のサイズはどうなってるのでしょう?
固定サイズ(静的)? それとも 実行中に決まる(動的)?


配列の定義が固定サイズ,例えば
int Data[4][3];
とかに決まっているならば,

関数側も
void F( int A[4][3] ); //[4]は飾りで,Aの型は int (*A)[3] になるけど
と書いておけばよいのではないでしょうか.

あるいはそういう表記だと無駄に混乱するとかであれば
struct Data{ int array[4][3]; };
みたく配列をstructに包んでしまうとか.