我的问题是,当你有一个数组 tab[a][b][c]
时,你是否可以使用 tab[a]
作为参数 数组[b][c]
?
这是一个例子:
void function(int tab[5][6])
{
tab[4][3]++;
}
int main()
{
int tab[9][5][6];
for (int i=0;i<9;i++)
{
function(tab[i]);
}
return 0;
}
最佳答案
when you have an array
tab[a][b][c]
, are you allowed to usetab[a]
as a parameterarray[b][c]
?
是
int tab[9][5][6];
类型为 array 9 of array 5 of array 6 of int .
tab[i]
是 int
的数组 6 的数组 5 类型。`
当代码调用function(tab[i])
时,tab[i]
被转换为第一个元素的地址。在本例中,即 &tab[i][0]
,其类型为 pointer to array 6 of int .
void function(int tab[5][6])
与 void function(int (*tab)[6])
的操作相同。 IOWs,函数需要一个pointer to array 6 of int . 5
是对编码人员的建议,但不是对编码有用的功能。
好:函数调用提供了预期的类型。
tab[4][3]++;
对 tab[4][3]
进行操作。 4
表示使用 int (*tab)[6]
的第 4 个索引元素(从 0 开始)。幸运的是,这没问题,因为调用代码的数组足够大,可以处理索引 4。
关于C 使用n+1维数组作为n维数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41248338/