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

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

Mary-Kate Olsen
發布: 2024-12-15 00:50:12
原創
761 人瀏覽過

How Can I Correctly Pass Multidimensional Arrays to Functions in C and C  ?

在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中的函數,一種稱為指標算術的技術是使用:

  1. 將陣列指標宣告為指向指標的指標: int **arr.
  2. 將陣列名稱轉換為指向陣列指標: arr = (int **)a.

修改後的程式碼

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板