c - 如何将动态二维字符数组传递给 C 中的函数?

标签 c arrays function

我知道当我将二维数组传递给 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/

相关文章:

c - 删除存储在数组中的标志位

c++ - 为什么结构的方法不必在 C++ 中声明?

c - 在 C 中缩短我的代码

javascript - 在 Javascript 中将字符串转换为数组的数组

c - 如何在内核空间内跨子目录访问全局变量?

java - 将单独的 "double"值转换为 ArrayList 中的数组

javascript - 这种类型的函数在javascript中意味着什么?

arrays - 返回一个映射并将结果存储在不同的变量中

c - 在c中制作具有特定宽度和高度的钻石(gnuplot)

c - 出现错误 : expected ‘{’ before ‘(’ token