理解變數與數字文字的陣列初始化 問題: 問題:在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,它也會在編譯時求值表達式。