gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:37 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com