c - 在 C 中将 2 维数组作为函数参数传递时出错

标签 c arrays multidimensional-array

我尝试将二维数组作为参数传递给这样的函数:

    void comb(int n, int array[n][n-1])
    {
     .....
    }

在主函数中:

    int main(int argc, const char * argv[])
    {
     const int p = 10;
     int array[p][p-1]; 
     comb(p, array); //Error:No matching function for call to 'comb'
     return 0;
    }

“comb”函数在主函数上方声明。但是 Xcode 在“comb(p, array)”行上给了我错误消息“没有调用‘comb’的匹配函数”。

我不知道如何解决这个问题。另外,是否有更好的方法来传递 2 维数组作为参数?

最佳答案

您的代码在 C99 中是正确的。

如果您收到编译器错误,可能是因为您没有显示真实代码,或者您没有在 C99 模式下调用编译器。

在 C11 中,编译器是否支持 VLA 是可选的,但您的编译器文档应表明是否支持。

没有其他方法可以将 VLA 作为参数传递。

如果您的数组维度在编译时已知,则可以将 const int p = 10; 替换为 #define ARRAY_DIM 10 ;那么你的数组将不再是 VLA,函数可以简单地是:

void comb(int array[ARRAY_DIM][ARRAY_DIM-1])
{

关于c - 在 C 中将 2 维数组作为函数参数传递时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24499538/

相关文章:

c - 使用 glib/gio 指定 ipv6 接口(interface)

c - 如何在c中实现结构体中的变量?

php - 在帖子中多次显示相同的随 secret 钥

ios - 我想将每个单元格链接到不同的 URL

c - 没有 FPU 的处理器中的浮点计算

c - 为什么不能将指针分配给 C 中的数组?

ruby-on-rails - Messy 从 Rails 3 controller 返回查看

php - MySQL查询到多维

php - 使用来自 php 的 Sql 查询进行数组操作以在 HTML 上显示它?

c - 多维数组 : incompatible type assignment