[英]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.