簡體   English   中英

將可變長度的二維數組傳遞給函數

[英]Passing a variable length 2D array to a function

如果我動態分配一個二維數組(malloc it),

int r,c;
scanf("%d%d",&r,&c);
int **arr = (int **)malloc(r * sizeof(int *));

for (i=0; i<r; i++)
     arr[i] = (int *)malloc(c * sizeof(int));

然后稍后將其傳遞給原型為的函數:

fun(int **arr,int r,int c)

沒有問題。 但是當我聲明一個像 VLA 這樣的二維數組時,即

int r,c;
scanf("%d%d",&r,&c);
int arr2[r][c];

當我嘗試將它傳遞給同一個函數時,它給了我一個錯誤。 為什么會這樣? 有什么方法可以將第二個二維數組(arr2)傳遞給函數?

我知道有很多類似的問題,但我沒有找到解決相同問題的問題。

一維數組衰減為指針。 但是,二維數組不會衰減為指向指針的指針。

當你有

int arr2[r][c];

並且你想用它來調用一個函數,這個函數需要聲明為:

void fun(int r, int c, int arr[][c]);

並調用它

fun(r, c, arr2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM