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

如何確定 C 中作為函數參數傳遞的陣列的大小?

Patricia Arquette
發布: 2024-11-09 10:36:02
原創
648 人瀏覽過

How to Determine the Size of an Array Passed as a Function Argument in C  ?

C 函數參數中的陣列大小決定

與主函數不同,決定作為參數傳遞給函數的陣列的大小在C 中使用sizeof() 需要參考模板。這是因為數組在傳遞給函數時會衰減為指標。

陣列衰減為指標

考慮以下程式碼片段:

int length_of_array(int some_list[]);
登入後複製

儘管帶方括號的聲明, some_list 在作為參數傳遞時衰減為整數指標int* 。因此,sizeof(some_list) 傳回的是指標的大小,而不是陣列大小。

參考範本解決方案

要正確決定陣列的大小,使用參考範本。例如:

template<size_t N>
int length_of_array(int (&amp;arr)[N]) {
  std::cout << N << std::endl; // Outputs the correct array size
  return N;
}
登入後複製

例外:多維數組

數組衰減規則有一個例外。多維數組保留其維度並且不作為指標傳遞。因此,可以直接使用 sizeof() 來確定它們的大小:

int a[3][4];
std::cout << sizeof(a) / sizeof(a[0]); // Output: 4 (number of columns)
登入後複製

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

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