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.
DankeKlar 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.