理解無法將多維數組傳遞給函數
考慮以下程式碼片段:
#include <stdio.h> 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(a, 4, 4); }
此程式碼旨在旨在將多維數組a 傳遞給採用int 指標數組int 的函數print *arr[].然而,在 C中,此程式碼會產生以下錯誤:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
解釋:
問題的癥結在於資料類型不相容。像 a 這樣的 C 風格多維數組不能直接轉換為指向 int *arr[] 指標數組的指標。在 C 中, a 的資料型態是 int[4][4],它表示整數的二維陣列。另一方面,int *arr[]是一個指向整數數組的指針,其中每個元素都是指向整數的指針。
解決方案:
到要解決此問題並將多維數組傳遞給採用int 指標數組的函數,您可以修改程式碼以將多維數組明確轉換為指針數組。這可以透過利用「將多維數組轉換為 C 中的指標」問題的已接受答案中描述的技術來實現。
附加說明:
以上是為什麼我不能將多維數組作為 C 中的指標數組傳遞給函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!