ポインター値をパラメーターとして 2 次元配列に渡そうとしていますが、うまくいきませんか? 次に例を示します。
void Pass(char *ch) // <--------- Where's I'm getting the error
{}
int main(...)
{
char ch[5][5];
Pass(ch);
}
2次元配列へのポインタであるパラメータとして、どのように正しく渡す必要がありますか?
ポインター値をパラメーターとして 2 次元配列に渡そうとしていますが、うまくいきませんか? 次に例を示します。
void Pass(char *ch) // <--------- Where's I'm getting the error
{}
int main(...)
{
char ch[5][5];
Pass(ch);
}
2次元配列へのポインタであるパラメータとして、どのように正しく渡す必要がありますか?
Cでは、2次元配列へのポインターは基本的に1次元配列へのポインターと同じであり、ポインターとして渡されると2次元配列の元のサイズが失われます(char*
あなたの場合)。
明示的なサイズ定義を使用して Pass 関数を定義できます。
void Pass(char ch[5][5]) {...}
または、追加のパラメーターとしてサイズを渡します。
void Pass(char* ch, int size_x, int size_y) {...}
2 番目のオプションはより動的ですが、より注意が必要です。(x,y) の配列にアクセスするには、次の式を使用します。
ch[size_y * x + y]
渡すのは冗長に思えるかもしれませんが、 from toとfrom tosize_x
を制限するために必要になります。x
0
size_x-1
y
0
size_y-1