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