我知道当我将二维数组传递给 c 中的函数时,我会这样写
int test(myarray[][5]){
//something
}
int main(void){
//something
test(myarray);
return 0;
}
这是当我有 5 个列时,但是如果在程序开始时我扫描行数和列数,我该怎么做
scanf("%d %d", &rows, &collumns);
char myarray[rows][collumns];
test(myarray);
我的测试函数的声明中应该包含什么,我知道我不能像在第一个代码中那样放 5,我也不能像 1000 那样放最大值,如果我放
int test(myarray[][collumns])
它说我的函数中没有定义列...
最佳答案
传递另一个设置宽度的变量。这是一个 c99 特性。
void test( size_t width , char myarray[][width] )
{
}
你可以这样调用它:test( collumns , array );
myarray
的行为与 main 中的数组完全一样。 (除了 myarray 实际上是一个指针,所以 sizeof 运算符会给你一个指针的大小,而不是数组)
您还应该传递数组的高度(在您的示例中为行),除非该信息以某种方式已知。
关于c - 如何将动态二维字符数组传递给 C 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23132479/