Heim > Backend-Entwicklung > C++ > Warum funktionieren Arrays variabler Länge in diesem C-Code trotz der Regel zur konstanten Array-Begrenzung?

Warum funktionieren Arrays variabler Länge in diesem C-Code trotz der Regel zur konstanten Array-Begrenzung?

DDD
Freigeben: 2024-12-16 11:40:10
Original
108 Leute haben es durchsucht

Why Do Variable-Length Arrays Work in This C   Code Despite the Constant Array Bound Rule?

Arrays variabler Länge in C trotz konstanter Array-Grenze-Anforderung

In C wird angegeben, dass die Array-Grenze ein konstanter Ausdruck sein muss. In bestimmten Codeszenarien scheint es jedoch so zu sein, dass gegen diese Regel verstoßen wird, ohne dass es zu Fehlern kommt. Betrachten Sie das folgende Beispiel:

#include <iostream>
using namespace std;

int main(){
    int n=10;
    int a[n];

    for (int i=0; i<n; i++) {
        a[i]=i+1;
        cout<<a[i]<<endl;
}
    return 0;
}
Nach dem Login kopieren

Laut Lehrbüchern sollte dieser Code einen Fehler auslösen, da n kein konstanter Ausdruck ist. Überraschenderweise läuft es in Xcode4 unter Mac einwandfrei. Was erklärt diesen scheinbaren Widerspruch?

Die Antwort liegt in einer C99-Funktion namens Variable Length Arrays (VLAs). Obwohl sie hauptsächlich in C verwendet werden, unterstützen bestimmte Compiler VLAs auch in C. In diesem Zusammenhang ist int a[n] ein VLA, das ähnlich wie int a[10] Platz auf dem Stapel zuweist.

Daher verwendet der obige Code ein VLA mit einer variablen Länge n. Diese Funktion ermöglicht die Erstellung von Arrays mit dynamisch bestimmten Größen, auch wenn die Array-Grenze technisch gesehen kein konstanter Ausdruck ist.

Das obige ist der detaillierte Inhalt vonWarum funktionieren Arrays variabler Länge in diesem C-Code trotz der Regel zur konstanten Array-Begrenzung?. 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