我的问题是,当您有一个数组tab[a][b][c]
时,您是否可以使用tab[a]
作为参数array[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;
}
答案 0 :(得分:2)
当您拥有数组
tab[a][b][c]
时,您是否可以使用tab[a]
作为参数array[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
in表示使用int (*tab)[6]
的第4个索引元素(从0开始)。幸运的是,这是正常的,因为调用代码的数组足以处理索引4。