Heim > Backend-Entwicklung > C++ > Warum kann ich ein C-Array nicht mit variabler Länge initialisieren?

Warum kann ich ein C-Array nicht mit variabler Länge initialisieren?

Linda Hamilton
Freigeben: 2024-12-15 09:05:11
Original
546 Leute haben es durchsucht

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

Array-Initialisierung mit variablen vs. numerischen Literalen verstehen

Problem:

In C , Versuch, ein Array mit einer variablen Länge zu initialisieren, z. B. int n = 10; double tenorData[n] = {1, 2, 3, ...} führt zu einem Kompilierungsfehler. Die Initialisierung mit einer festen Länge, z. B. double tenorData[10], ist jedoch erfolgreich. Warum passiert das?

Antwort:

In C sind Arrays variabler Größe nicht zulässig. Während Erweiterungen in bestimmten Compilern (z. B. G ) sie zulassen, bleiben sie laut Standard illegal. Um Arrays mit variablen Längen in C zu erstellen, können Sie entweder:

  • Speicher dynamisch zuweisen: Speicher manuell mithilfe von Zeigern zuweisen, aber denken Sie daran, ihn später freizugeben.
  • Standardcontainer verwenden: Verwenden Sie Container wie std::vector, um dynamischen Speicher zu verwalten Verwaltung.

Wenn Sie immer noch ein Array benötigen, sollten Sie die Verwendung eines konstanten Werts anstelle einer Variablen in Betracht ziehen:

  • Konstante:Deklarieren Sie die Array-Größe als eine Konstante wie const int n = 10; double a[n];, da Konstanten zur Kompilierungszeit ausgewertet werden.
  • Constexpr (C 11): Für durch Funktionen bestimmte Werte verwenden Sie constexpr, das auch Ausdrücke zur Kompilierungszeit auswertet.

Das obige ist der detaillierte Inhalt vonWarum kann ich ein C-Array nicht mit variabler Länge initialisieren?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage