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