我尝试将二维数组作为参数传递给这样的函数:
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/