簡體   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