Heim >Backend-Entwicklung >C++ >Können Sie in C ein Array mit einer Variablengröße deklarieren?

Können Sie in C ein Array mit einer Variablengröße deklarieren?

DDD
DDDOriginal
2024-11-01 22:11:29478Durchsuche

Can You Declare an Array with a Variable Size in C  ?

Variable Array-Größendeklaration in C

In C wird normalerweise erwartet, dass die Größe eines Arrays ein konstanter ganzzahliger Wert ist. Es stellt sich jedoch die Frage, ob es möglich ist, ein Array mit einer nicht konstanten Variablen als Größe zu deklarieren.

Wie Bjarne Stroustrup in The C Programming Language hervorhebt, „muss ein Array, das gebunden ist, ein konstanter Ausdruck sein.“ Daher wird der folgende Code als falsch angesehen:

<code class="cpp">int ArraySize = 5;
int MyArray[ArraySize]; // incorrect</code>

Überraschenderweise wird der Code jedoch auf einigen Systemen wie GCC v4.4.0 erfolgreich kompiliert:

<code class="cpp">void f(int i) {
    int v2[i];
}

int main() {
    int i = 3;
    int v1[i];
    f(5);
}</code>

Dieses unerwartete Verhalten ist auf eine GCC-Erweiterung des Standards zurückzuführen. Standardmäßig erlaubt GCC die Verwendung einer nicht konstanten Variablen als Array-Größe. Allerdings wird diese Funktion möglicherweise nicht von allen Compilern oder Plattformen unterstützt.

Wenn Portabilität erforderlich ist, wird dringend empfohlen, die Option -pedantic mit GCC zu verwenden, um Warnungen für diese Erweiterung zu aktivieren, oder -std=c zu verwenden 98, um einen Fehler auszulösen. Durch die Einhaltung des Standards wird der Code zuverlässiger und plattformübergreifend kompatibel.

Das obige ist der detaillierte Inhalt vonKönnen Sie in C ein Array mit einer Variablengröße deklarieren?. 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