首頁 > 後端開發 > C++ > 如何確定傳遞給 C 函數的陣列的大小?

如何確定傳遞給 C 函數的陣列的大小?

DDD
發布: 2024-11-08 14:38:02
原創
881 人瀏覽過

How Do You Determine the Size of an Array Passed to a C   Function?

傳遞給C 語言函數時決定陣列大小

與main 函數不同,sizeof() 直接傳回陣列的大小,將陣列傳遞給函數需要考慮由於數組衰減為指標。

陣列衰減為指標

當作為參數傳遞時,陣列衰減為指向其的指標第一個元素。這表示函數中的表達式 sizeof(some_list) 將給出指標的大小,而不是整個陣列的大小。

Sizeof 比率問題

使用用於計算數組大小的表達式(sizeof(some_list)/sizeof(*some_list)) 不起作用,因為:

  • sizeof(some_list) 傳回指標的大小,通常為4 個位元組(對於32 位元系統)。
  • sizeof(*some_list) 傳回單一陣列元素的大小,對於整數來說通常為 4 個位元組。

此比率始終為 1 ,與陣列大小無關。因此,函數 length_of_array 始終傳回 1。

使用模板的替代方法

要在傳遞給函數時準確地確定數組的大小,請使用模板:

template<size_t N>
int length_of_array(int (&amp;arr)[N])
{
    return N;
}
登入後複製

此方法使用模板參數N 來指定數組的大小,然後由函數傳回該大小。

以上是如何確定傳遞給 C 函數的陣列的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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