Menyelesaikan Ralat "Ungkapan Malar Jangkaan" untuk Saiz Tatasusunan
Pertimbangkan kod C berikut:
<code class="cpp">int count = 0; float sum = 0; float maximum = -1000000; std::ifstream points; int size = 100; float x[size][2]; // <<< Error
Ini kod menimbulkan ralat "ekspresi malar dijangka" apabila mengisytiharkan tatasusunan x. Ralat ini berlaku kerana C memerlukan saiz tatasusunan bukan statik untuk diketahui pada masa penyusunan.
Penyelesaian Menggunakan Vektor
Untuk menyelesaikan isu ini, kita boleh menggunakan vektor C bukannya tatasusunan:
<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
Penyelesaian Menggunakan baharu
Pendekatan lain melibatkan memperuntukkan tatasusunan secara dinamik menggunakan operator baharu:
<code class="cpp">float (*px)[2] = new float[size][2];</code>
Penyelesaian Alternatif
Pertimbangan untuk Pengkompil Bukan C 11
Jika anda tidak mempunyai sokongan C 11, gunakan teknik berikut:
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Expected Constant Expression\' Apabila Mengisytiharkan Tatasusunan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!