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

标签 c arrays multidimensional-array

我的问题是,当你有一个数组 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 use tab[a] as a parameter 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 表示使用 int (*tab)[6] 的第 4 个索引元素(从 0 开始)。幸运的是,这没问题,因为调用代码的数组足够大,可以处理索引 4。

关于C 使用n+1维数组作为n维数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41248338/

相关文章:

ios - 将 ID 存储在 C 数组中

c - 为什么当前目录改变

c - if 语句的数组元素

c# - 为什么 C# 在 while 循环中也不允许空条件?

ruby-on-rails - 如何找到数组类的长度?

php - 如何从 CakePHP 列表数组返回一个值以在表单中使用?

你能帮我理解为什么链表上的以下代码给我一个段错误吗?

swift - 如何在 swift 中正确创建多维数组?

PHP删除多维数组中的重复数组

C++11 动态分配可变长度多维数组