0

重複の可能性:
C で関数の引数として多次元配列を渡す

C で、関数が 2 次元配列を受け取るようにしたい場合、関数パラメーターに * 表記を使用できますか?

int (int my2dary[][10]);  //This is what I do not want.
4

2 に答える 2

0

コンパイル時に配列のサイズがわからないことが問題である場合は、次のようにすることができます。

int func(int *array, int size)
{
   int n,m;
   ... 
   array[m*size+n]; /* = array[m][n] if in the caller: int array[x][size]; */
}

オプションで(そしておそらくあなたが必要とする)、配列境界をテストできるようにするために2番目のサイズの引数(x)を渡すことができます

于 2013-02-03T02:33:02.347 に答える
0

はい、int の配列へのポインターを渡します

int func(int (*my2dary)[10]);

そしてあなたはそれを呼ぶ

int a[5][10];
func(a);

ただし、 にfunc含まれる要素の数がわからmy2daryないため、数値も指定する必要があります

int func(int n, int (*my2dary)[10]);

そして電話する

int a[5][10];
func(5, a);

複雑な C/C++ 宣言の解釈方法または「時計回り/らせんの法則」を参照してください。

于 2013-02-03T01:41:47.177 に答える