簡體   English   中英

很難將二維數組傳遞給函數

[英]Hard time passing two dimensional arrays to functions

所以我正在處理這段代碼,其中我試圖將二維數組傳遞給函數,就像這樣:

函數簽名:void f(array [4] [4],int n);

int array [4][4];
f(&array[0][0],16)
for (int i=0;i<n;i++) // I'm working by c99 standard.
{
 hist[ *(&array[0][0] +i) ] ++ ;  // I know the max value in array[4][4] , and hist is initialized accordingly.
}
}

我只是不斷收到有關不兼容類型的各種錯誤,例如,我得到“預期(*)[4]但類型是int * help?:)

&array[0][0]是一個int指針。

指針不能轉換為二維數組。 因此,您需要像f(array, 16)一樣傳遞它。 基本上,您要傳遞一個int*並且它與int[][4]不兼容。

值得指出的是,這對於一維數組是有效的(盡管這是不必要的,並且可能造成混淆):

void g(int x[]) {}
int arr[4];
g(arr); //valid of course
g(&arr[0]); //also valid

解釋了為什么它與多維數組不同。

暫無
暫無

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

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