首頁 >後端開發 >C++ >將陣列傳遞給 C 函數時,為什麼「sizeof」會傳回不正確的陣列大小?

將陣列傳遞給 C 函數時,為什麼「sizeof」會傳回不正確的陣列大小?

Linda Hamilton
Linda Hamilton原創
2024-12-14 15:35:16861瀏覽

Why Does `sizeof` Return an Incorrect Array Size When Passing an Array to a C Function?

傳遞給函數時數組大小差異

sizeof() 運算子在傳遞給函數時報告數組的不準確值。考慮以下程式碼片段:

從 main() 呼叫時,sizeof() 運算子準確地報告數組的大小,但在 test() 函數中,它低估了一個元素的大小。出現這種差異的原因是,當將陣列傳遞給 C 中的函數時,它會衰減為引用數組第一個元素的指標。因此,sizeof(arr) 計算的是指標的大小,而不是底層陣列的大小。

要解決此問題,數組的大小應作為單獨的參數明確傳遞給函數:

或者,對於動態分配的數組(此處未顯示),可以使用標準C 函式庫函數stdlib.h 來準確取得數組的尺寸。

以上是將陣列傳遞給 C 函數時,為什麼「sizeof」會傳回不正確的陣列大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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