在C 和C 中傳遞多維數組
在C 和C 中,int4 類型的數組不能直接傳遞給需要數組的函數整數*。這種不相容性源自於這兩種語言處理多維數組的方式的根本差異。
在 C 中,多維數組名稱衰減為指向其第一個元素的指針,從而允許程式碼片段中範例的實現。然而,在C 中,即使在函數呼叫中使用數組,數組也會保持其類型,從而導致遇到錯誤訊息:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
C 和C 的解決方案
To將多維數組傳遞給C 和 C中的函數,一種稱為指標算術的技術是使用:
修改後的程式碼
void print(int **arr, int s1, int s2) { int i, j; for(i = 0; i < s1; i++) for(j = 0; j < s2; j++) printf("%d, ", arr[i][j]); } int main() { int a[4][4] = {{0}}; print((int **)a, 4, 4); }
重要說明
重要說明重要說明程式碼執行在C 和C 中都取得了成功。但是,對 printf 語句進行了額外的更正,以確保使用 arr[i][j] 而不是 *((arr i) j) 正確存取數組元素。 請記住,無法傳遞多維數組直接由 C 和 C 中數組的不同行為引起,必須相應地解決。以上是如何正確地將多維數組傳遞給 C 和 C 中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!