傳遞給C 語言函數時決定陣列大小
與main 函數不同,sizeof() 直接傳回陣列的大小,將陣列傳遞給函數需要考慮由於數組衰減為指標。
陣列衰減為指標
當作為參數傳遞時,陣列衰減為指向其的指標第一個元素。這表示函數中的表達式 sizeof(some_list) 將給出指標的大小,而不是整個陣列的大小。
Sizeof 比率問題
使用用於計算數組大小的表達式(sizeof(some_list)/sizeof(*some_list)) 不起作用,因為:
此比率始終為 1 ,與陣列大小無關。因此,函數 length_of_array 始終傳回 1。
使用模板的替代方法
要在傳遞給函數時準確地確定數組的大小,請使用模板:
template<size_t N> int length_of_array(int (&arr)[N]) { return N; }
此方法使用模板參數N 來指定數組的大小,然後由函數傳回該大小。
以上是如何確定傳遞給 C 函數的陣列的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!