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

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

Patricia Arquette
Patricia Arquette原創
2024-11-09 10:36:02659瀏覽

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

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