Heim > Backend-Entwicklung > C++ > Hauptteil

Warum führt die Deklaration eines Float-Arrays mit einer dynamischen Größe zu einem Fehler „Erwarteter konstanter Ausdruck' in C?

DDD
Freigeben: 2024-10-26 13:46:03
Original
828 Leute haben es durchsucht

Why Does Declaring a Float Array with a Dynamic Size Result in an

Array-Größenverwechslung verursacht Fehler

Beim Deklarieren eines Float-Arrays mit einer dynamischen Größe, wie zum Beispiel:

<code class="cpp">int size = 100;
float x[size][2];</code>
Nach dem Login kopieren

Möglicherweise tritt der Fehler „Erwarteter konstanter Ausdruck“ auf. Dies liegt daran, dass C erfordert, dass Arrays zur Kompilierungszeit feste Größen haben, die nicht während der Laufzeit bestimmt werden. Die Größenvariable hier kann nicht als gültige Array-Dimension verwendet werden.

Lösung mit Vektor

Um dieses Problem zu vermeiden, sollten Sie die Verwendung eines Vektors in Betracht ziehen:

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

Dadurch wird ein Vektor von Arrays erstellt, wobei jedes Array zwei Floats enthält.

Alternative Lösungen

Alternativ können Sie die Rohspeicherzuweisung mit new verwenden oder Ihre eigene erstellen Array-Typ:

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

// With custom array type
template<typename T, size_t N>
struct array {
  T data[N];
};

array<float, 2> myArray[size];</code>
Nach dem Login kopieren

Zusätzliche Optionen

Weitere Optionen umfassen die Verwendung eines Vektors von Paaren oder das Rollen Ihres eigenen Array-Typs mit Syntaxhilfen:

<code class="cpp">// Vector of pairs
std::vector<std::pair<float, float>> x(size);

// Custom array type
template<typename T>
struct identity {
  typedef T type;
};

using FloatArray2 = identity<float[2]>::type;
FloatArray2 myArray[size];</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum führt die Deklaration eines Float-Arrays mit einer dynamischen Größe zu einem Fehler „Erwarteter konstanter Ausdruck' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!