Heim >Backend-Entwicklung >C++ >Gibt es in C Variable-Length-Arrays (VLAs)?

Gibt es in C Variable-Length-Arrays (VLAs)?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-16 13:11:03806Durchsuche

Do Variable Length Arrays (VLAs) Exist in C  ?

Arrays mit variabler Länge in C

Trotz der allgemeinen Annahme, dass C keine Arrays mit variabler Länge (VLAs) unterstützt, gibt es Möglichkeiten, dies zu erreichen ähnliche Funktionalität. Es ist jedoch wichtig zu beachten, dass die Verwendung dieser Methoden nicht die Kompatibilität mit allen Compilern garantiert.

Code-Erklärung

Der von Ihnen bereitgestellte Beispielcode wird kompiliert und funktioniert, weil:

  • GCC-Kompatibilität: GCC Version 4.7 und höher unterstützt VLAs als Erweiterung. Das heißt, wenn Ihr Code mit GCC kompiliert wird, interpretiert er int a[n]; als VLA.
  • Automatische Speicherzuweisung: VLAs werden auf dem Stapel gespeichert, einer Art Speicher, der beim Start einer Funktion automatisch zugewiesen wird. In Ihrem Code wird a also basierend auf dem vom Benutzer eingegebenen Wert von n auf dem Stapel zugewiesen.

Standardunterstützung

Es ist wichtig zu beachten dass der C-Standard nicht verlangt, dass Compiler VLAs unterstützen. Daher ist Code, der VLAs verwendet, möglicherweise nicht über verschiedene Compiler oder Plattformen hinweg portierbar.

Fehlgeschlagener Vorschlag für C 14 und C 17

Ursprünglich wurde vorgeschlagen, dass VLAs dies sein würden im C 14-Standard enthalten. Allerdings hat der Vorschlag den Abstimmungsprozess nicht bestanden und VLAs wurden der Sprache nicht hinzugefügt. Der Vorschlag wurde auch nicht für die Aufnahme in C 17 angenommen.

Schlussfolgerung

Obwohl VLAs nicht offiziell Teil des C-Standards sind, können sie als Erweiterung verwendet werden in bestimmten Compilern wie GCC. Es ist jedoch wichtig, sich potenzieller Portabilitätsprobleme bewusst zu sein und VLAs mit Vorsicht zu verwenden, insbesondere bei plattformübergreifendem Code.

Das obige ist der detaillierte Inhalt vonGibt es in C Variable-Length-Arrays (VLAs)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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