Array[hier eine Variable]
-
Hallo Leute,
könnte mir bitte jemand ein Beispiel für ein Array mit einer vom Benutzer frei definierbaren Grösse geben?
Ich meine soetwas wie:printf ( "Geben Sie bitte die Laenge des Arrays an: " );
scanf ( "%d", & LAENGE );
printf ( "\n\n" );
int array[LAENGE];
usw....funktioniert natürlich nicht, aber wie könnte man dieses Problem in C lösen???
Quellcode-Beispiele wären echt klasse:)Für jede Hilfe vielen Dank!
Ciao.
-
such mal nach malloc im forum...
-
Windalf schrieb:
such mal nach malloc im forum...
ach komm, windalf, sei nicht so gemein
#include <stdlib.h> /* sei n eine int Variable, die die anzahl von Elementen hat */ /* ist ist ein int* */ x = (int*) malloc(sizeof(int)*n); ... free(x); /* nicht vergessen am schluss */
Im Allgemeinen:
datentyp* foo; foo = (datentyp*) malloc(sizeof(datentype)*Anzahl_der_Elementen); ... free(foo);
Gruss
Pablo
-
Hallo,
der Cast ist unnötig.
-
CarstenJ schrieb:
Hallo,
der Cast ist unnötig.
Hi
Ja, da hast du Recht. Ich caste es trotzdem, schadet ja nicht. Wenn es C++ wäre, dann würde der Kompiler ne Warnung schmeißen.
-
supertux schrieb:
Ja, da hast du Recht. Ich caste es trotzdem, schadet ja nicht.
In C89 schon, in C99 nicht mehr.
Denn in C89 musste man keine Prototypen für eine Funktion angeben - dann wurde nämlich immer der Typ int foo(); angenommen.
wenn du nun vergisst stdlib.h einzubinden dann gibt es mit dem cast in C89 keine Warnung und der Compiler glaubt, malloc liefert int.
Das ist auf den gängigen Plattformen nicht tragisch, da sizeof(int)==sizeof(void*) - aber zB bei 64Bit Plattformen dürfte sich dass dann schon wieder ändern
Und wenn sizeof(int) != sizeof(void*) ist, dann hast du einen fiesen Bug im Code.
Und wenn du für C++ kompilieren willst, dann ersetze malloc() doch durch:
class VoidPtr { private: void* p; public: VoidPtr(void* p) : p(p) {} template<typename T> operator T() { return static_cast<T>(p); } }; VoidPtr cpp_malloc(size_t size) { return VoidPtr(malloc(size)); }
-
Wär auch nicht schlecht wenn er noch die stdlib.h includiert....oder?
-
dfhdfh schrieb:
Wär auch nicht schlecht wenn er noch die stdlib.h includiert....oder?
Ja, in Supertux' Beispiel steht es bereits.