首頁  >  文章  >  後端開發  >  如何修復在 C 中宣告數組時出現的「預期常數表達式」錯誤?

如何修復在 C 中宣告數組時出現的「預期常數表達式」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-25 13:04:03544瀏覽

How to Fix the

解決陣列大小的「預期常數表達式」錯誤

考慮下列C 程式碼:

<code class="cpp">int count = 0;
float sum = 0;
float maximum = -1000000;

std::ifstream points;

int size = 100;
float x[size][2]; // <<< Error

此🎜>此宣告數組x 時,程式碼引發「預期常數表達式」錯誤。出現此錯誤的原因是 C 要求在編譯時已知非靜態陣列大小。

使用向量的解

要解決此問題,我們可以使用C 向量而不是數組:

<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>

使用new 的解決方案

另一種方法涉及使用new 運算符動態分配數組:

<code class="cpp">float (*px)[2] = new float[size][2];</code>

替代解決方案

  • 使用Boost:如果您有權利存取Boost函式庫,則可以使用boost::array代替std::array。
  • 定義自訂數組類型:定義支援動態調整大小的自訂數組類型並在向量中使用它。

非C 11 編譯器的注意事項

如果您沒有C 11 支持,請使用以下技術:

  • 使用new 時使用標識模板來簡化語法。
  • 使用 std::pair作為前面提到的向量解決方案的替代方案。

以上是如何修復在 C 中宣告數組時出現的「預期常數表達式」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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