首頁 >後端開發 >C++ >如何正確地將多維數組傳遞給 C 中的函數?

如何正確地將多維數組傳遞給 C 中的函數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-01 13:41:10707瀏覽

How Can I Correctly Pass a Multidimensional Array to a Function in C  ?

將多維數組傳遞給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 中編譯。原因如下:

  • 在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn