將多維數組傳遞給C 中的函數
在此程式碼片段中,嘗試將C 風格的多維數組傳遞給需要整數指標數組的函數:
#include<stdio.h> void print(int *arr[], int s1, int s2) { ... } int main() { int a[4][4] = {{0}}; print(a,4,4); }
此程式碼可以在 C中編譯,但不能在 C 中編譯。原因如下:
print(&a[0],4,4);
在 C 中,這種衰減不是允許。 陣列型別 int4 不能隱式轉換為指標型別 int**。這解釋了錯誤訊息:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
解:
要將多維數組傳遞給C 中的函數,必須顯式轉換它指向適當類型的指標。這可以使用以下技術來實現:
#include<stdio.h> void print(int **arr, int s1, int s2) { ... } int main() { int a[4][4] = {{0}}; print((int **)a,4,4); }
透過使用(int )** 強制轉換將數組明確轉換為指針,程式碼現在可以按預期進行編譯和運行C和C 。
以上是如何正確地將多維數組傳遞給 C 中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!