C使用n + 1维数组作为n维数组参数

时间:2016-12-20 17:47:09

标签: c arrays multidimensional-array

我的问题是,当您有一个数组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;
}

1 个答案:

答案 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 int5是编码员的建议,但不是对代码有用的功能。

好:函数调用提供了预期的类型。

tab[4][3]++;tab[4][3]进行操作。 4 in表示使用int (*tab)[6]的第4个索引元素(从0开始)。幸运的是,这是正常的,因为调用代码的数组足以处理索引4。