Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Dynamische Arrays in C/C++

Dynamische Arrays in C/C++

4D616316.12.1418:45
Hallo Leute,

ich hab gerade jemanden bei den C/C++ Hausaufgaben geholfen und war doch etwas verwundert was in den Folien für eine Deklaration für dynamische Arrays drinnen steht. Und zwar folgenes (selbstgeschriebenes Codebeispiel)

#include <stdio.h>

int main(int argc, char *argv[]) {
    int e;
    scanf("%d", &e);
    int y[e];
    
    for (int i = 0; i < e; i++)
    {
        y[i]= i;
    }
    
    for (int i = 0; i < e; i++)
    {
        printf("%d\n", y[i]);
    }
    return 0;
}

Meine Frage ist kurz: Warum geht
int y[e];
das? Oder seid wann geht das? Das Beispiel erzeugt nicht mal eine Warnung. Ich kenn es eigentlich so, das wenn man dynamische Arrays benutzen will, dafür eigentlich mit malloc() rumhantieren muss.

Danke!
0

Kommentare

Duck Dodgers16.12.1419:40
Also das Beispiel sollte korrekt sein. Aber ich sehe das wie du, für dynamische Arrays würde ich auch Pointer nutzen. Wer weiß, was der Lehrer unter dynamischen versteht
0
Dayzd16.12.1419:59
Was soll daran auch falsch sein?
Dynamisch bedeutet in dem Fall wohl einfach nur, dass im Vorfeld vom Programmierer die Größe des Arrays nicht festgelegt wird.

änder "e" mal nach der Initialisation vom Array, z.b. in "e = e + 5" und ich wette, dann fliegt dir das Ganze später um die Ohren.
0
lasergans16.12.1420:29
int y[e]; <-- Stack
int *y = malloc(..); <-- Heap
0
Marcel Bresink16.12.1421:06
Das ist eine Neuerung in der Sprache C, die 1999 mit der Norm "C99" (ISO/IEC 9899:1999) eingeführt wurde.

Es handelt sich nicht wirklich um ein dynamisches Array, sondern um den neu eingeführten Datentyp "Variable Length Array" (VLA). Dieser Typ darf nur in Blöcken und in Funktionsprototypen verwendet werden, nicht jedoch "static" oder "extern".
0
tmlen17.12.1411:57
Variable Length Arrays existieren in C99, jedoch offiziell nicht in C++. Aber einige Compiler unterstützen sie als nicht-standard Erweiterung. Z.b GCC: .
In C++17 werden "arrays of runtime bound" vermutlich ins Standard integriert: .
0
4D616318.12.1412:25
Ok, vielen Dank für die Antworten. Man lernt immer wieder was neues
0
gfhfkgfhfk18.12.1414:16
4D6163
Hallo Leute,

ich hab gerade jemanden bei den C/C++ Hausaufgaben geholfen und war doch etwas verwundert was in den Folien für eine Deklaration für dynamische Arrays drinnen steht.
Handelte es sich um C oder C++? Für C ist das beschriebene ok, aber wenn es sich um C++ handeln sollte taugt der Kurs nichts.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.