Heim >Backend-Entwicklung >C++ >Was passiert, wenn Sie in C/C ein Array mit der Größe Null definieren?

Was passiert, wenn Sie in C/C ein Array mit der Größe Null definieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 04:19:08990Durchsuche

What Happens When You Define a Zero-Sized Array in C/C  ?

Auswirkungen der Definition eines Arrays der Größe 0 in C/C

Bei der Definition eines Arrays in C/C die Größe des Arrays muss angegeben werden. Das Verhalten beim Definieren eines Arrays mit der Größe Null, wie es bei int array[0] der Fall ist, ist oft neugierig.

Im bereitgestellten Codebeispiel löst GCC beim Kompilieren keine Fehler oder Warnungen aus. Dies wirft die Frage auf, ob Arrays mit der Länge Null während der Kompilierung optimiert werden.

Gemäß der Norm ISO 9899:2011 (C99) darf ein Array keine Größe von Null haben. Der Standard besagt ausdrücklich, dass die Größe eines Arrays, wenn es sich um einen konstanten Ausdruck handelt, einen Wert größer als Null haben muss. Diese Regel gilt sowohl für einfache Arrays als auch für Arrays variabler Länge (VLAs).

Trotz des Sprachstandards erlauben einige Compiler möglicherweise die Definition von Arrays mit der Größe Null aus Gründen der Legacy-Kompatibilität oder für bestimmte Zwecke. Es kann jedoch nicht garantiert werden, dass das Verhalten von Arrays der Größe Null über verschiedene Compiler hinweg konsistent ist, und der Versuch, auf ein Array der Größe Null zuzugreifen, führt wahrscheinlich zu undefiniertem Verhalten.

Daher wird dies empfohlen um die Definition von Arrays mit der Größe Null zu vermeiden und um Fälle zu behandeln, in denen die Array-Größe auf andere Weise Null sein kann, z. B. durch bedingte Zuweisung von Speicher.

Das obige ist der detaillierte Inhalt vonWas passiert, wenn Sie in C/C ein Array mit der Größe Null definieren?. 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