繁体   English   中英

如何将动态2d char数组传递给C中的函数?

[英]How to pass a dynamic 2d char array to a function in C?

我知道当我将2d数组传递给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行为与主数组完全相同。 (除了myarray实际上是一个指针,因此sizeof运算符将为您提供指针的大小,而不是array的大小)

您还应该传递数组的高度(示例中的行),除非以某种方式知道该信息。

您可以使用动态内存分配

int main() {
    int i;
    char **myarray;
    scanf("%d %d", &rows, &collumns);
    myarray = (char**)malloc(rows);   //Memory allocation for rows
    for(i=0;i<rows;i++) {
    myarray[i] = (char*)malloc(columns);    //Memory allocation for colums
    }
    test(myarray);
}

int test(char** arr) {
  //Write your code as it is
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM