0

ポインター値をパラメーターとして 2 次元配列に渡そうとしていますが、うまくいきませんか? 次に例を示します。

void Pass(char *ch) // <--------- Where's I'm getting the error
{}

int main(...)
{
    char ch[5][5];
    Pass(ch);
}

2次元配列へのポインタであるパラメータとして、どのように正しく渡す必要がありますか?

4

2 に答える 2

1

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を制限するために必要になります。x0size_x-1y0size_y-1

于 2013-09-29T20:36:20.643 に答える