首頁 >後端開發 >C++ >為什麼無法初始化可變長度的 C 陣列?

為什麼無法初始化可變長度的 C 陣列?

Linda Hamilton
Linda Hamilton原創
2024-12-15 09:05:11553瀏覽

Why Can't I Initialize a C   Array with a Variable Length?

理解變數與數字文字的陣列初始化

問題:

問題:

在C🎜>在嘗試初始化一個可變長度的數組,例如int n = 10; double tenorData[n] = {1, 2, 3, ...},導致編譯錯誤。但是,使用固定長度(例如 double tenorData[10])進行初始化會成功。為什麼會出現這種情況?

答案:
  • 在 C 中,不允許使用可變大小的陣列。雖然某些編譯器(例如 G )中的擴充允許它們,但根據標準它們仍然是非法的。要在 C 中建立可變長度數組,您可以:
  • 動態分配記憶體:使用指標手動分配內存,但請記住稍後取消分配。

使用標準容器:

利用像std::vector這樣的容器來處理動態記憶體
  • 如果您仍然需要數組,請考慮使用常數值而不是變數:
  • 常數:將陣列大小宣告為常數,例如 const int n = 10; double a[n];,因為常數在編譯時求值。
Constexpr (C 11 ): 對於由函數決定的值,請使用 constexpr,它也會在編譯時求值表達式。

以上是為什麼無法初始化可變長度的 C 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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