在將數組傳遞給另一個函數而不明確指定其大小時理解數組大小可能是C 中的一個挑戰。這個問題是由於需要在接收數組作為參數的函數內執行循環而產生的。
最初的方法,使用對NULL 指標值的條件檢查,由於可能存在意外值而被證明是不夠的
C 中的一個有效解決方案涉及利用模板並透過參考:
template <typename T, int N> void func(T (&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中文網其他相關文章!