Vektor mit variabler Länge



  • Servus,

    bin totaler C Änfänger und muss jetzt irgendwie hinbekommen, dass ich einen Vektor mit einer Länge x verwenden kann.
    Also grob soll es so aussehen, wobei mir klar ist, dass es so nicht funktioniert:

    int laenge;
    
    laenge = 1+2+3; // Beispiel
    
    int vektor[laenge];
    

    Wäre super wenn mir jemand helfen könnte.
    Danke



  • Nimm Zeiger und reserviere deinen Speicher per malloc():

    int laenge = ...;
    int* vektor = malloc(laenge*sizeof(int));
    
    ...
    
    free(vektor);
    

    (in C99 gibt es auch VLA's, aber damit kenne ich mich nicht wirklich aus)



  • Noskro schrieb:

    Servus,

    bin totaler C Änfänger und muss jetzt irgendwie hinbekommen, dass ich einen Vektor mit einer Länge x verwenden kann.
    Also grob soll es so aussehen, wobei mir klar ist, dass es so nicht funktioniert:

    int laenge;
    
    laenge = 1+2+3; // Beispiel
    
    int vektor[laenge];
    

    Wäre super wenn mir jemand helfen könnte.
    Danke

    Klar geht das, wie CStoll sagte, gibt es in C99 (und NUR da, nicht in C89 und NICHT in ISO C++!) Variable Length Arrays (VLAs). Damit erreichst du auch dein Ziel:

    #include <stdio.h>
    
    int main(void) {
      int i;
      puts("Groesse eingeben:");
      scanf("%d", &i);
      if (i<=0)
        return 1;
    
      int x[i];
    
      //mit x arbeiten ...
    
      return 0;
    };
    

    Der Vorteil ist halt, dass man sich nicht mit dynamischer Speicherbeschaffung und den daraus folgenden Problemchen rumschlagen muss.

    MfG

    GPC



  • Vielen Danke.
    Brauchte zwar kurz um des ganze zu verstehen, aber ich glaub jetzt hab ichs.
    Und die Hauptsache ist es funktioniert jetzt.


Anmelden zum Antworten