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

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

DDD
DDD原創
2024-12-20 15:41:13734瀏覽

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

作為函數參數傳遞時確定數組大小

在將數組傳遞給另一個函數而不明確指定其大小時理解數組大小可能是C 中的一個挑戰。這個問題是由於需要在接收數組作為參數的函數內執行循環而產生的。

最初的方法,使用對NULL 指標值的條件檢查,由於可能存在意外值而被證明是不夠的

使用模板的C 方法

C 中的一個有效解決方案涉及利用模板並透過參考:

template <typename T, int N>
void func(T (&amp;a)[N]) {
    for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements
}

透過將陣列大小 N指定為模板參數,函數可以知道它正在使用的確切陣列大小。這種方法確保循環迭代預期數量的元素。

要使用此模板函數,可以如下傳遞數組:

int x[10];
func(x);

注意事項

它是需要注意的是,這種方法僅適用於數組,不適用於指針。對於更通用的解決方案,使用標準庫容器(例如 std::vector )可能是更好的選擇。

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

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