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