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