除非它是sizeof
或一元运算符的操作数&
,或者是用于在声明中初始化另一个数组的字符串文字,否则“N-element array of T
”类型的表达式将被转换为/替换为/“衰减”为类型为“pointer to T
”的表达式,其值是数组中第一个元素的地址。
如果您将函数称为
setPosition(grid, 10, 5);
该表达式grid
将具有 type char [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
有类型char (*)[1000][1000]
,所以你的函数原型需要是
void setPosition(char (*grid)[1000][1000], int a, int b) { ... }
并且您需要grid
在应用任何下标之前显式取消引用,如
(*grid)[a][b] = ...;