sizeof
または 単項演算子のオペランドである場合、または宣言で別の配列を初期化するために使用される文字列リテラルである場合を除き、&
型 "N-element array of T
" の式は / "decay" に変換 / 置換されます。T
値が配列の最初の要素のアドレスである「ポインタ」型の式。
関数を次のように呼び出す場合
setPosition(grid, 10, 5);
式grid
には typechar [1000][1000]
があり、上記の規則により type の式に置き換えられるchar (*)[1000]
ため、関数プロトタイプは次のようにする必要があります。
void setPosition(char (*grid)[1000], int a, int b) { ... }
また
void setPosition(char grid[][1000], int a, int b) { ... }
これは、このコンテキストでは同じことです。
関数を次のように呼び出す場合
setPosition(&grid, 10, 5);
式&grid
には typechar (*)[1000][1000]
があるため、関数プロトタイプは次のようにする必要があります
void setPosition(char (*grid)[1000][1000], int a, int b) { ... }
grid
次のように、添え字を適用する前に、明示的に逆参照する必要があります。
(*grid)[a][b] = ...;