dynamische Arrays in Strukturen
-
ich möchte in einer Struktur einen Array haben, so ungefähr:
struct object
{
int v[];
short length;
short color;
};aber der Array muss dynamisch sein, da erst zu Laufzeit bekannt wird wieviele Eckpunkte das Objekt haben soll
und diese sollen dann in dem v[] gespeichert werdengeht das überhaupt? ich muss dem Array ja irgendwann eine Größe zuweißen
aber sowas wie:object o;
o.v[] = {0,0,0,0,0};oder
object o;
int v[] = {0,0,0,0,0};
o.v = v;geht nicht
-
Du musst den Array als Pointer deklarieren und dynamisch Speicher anfordern. Initialisieren geht nur über eine Schleife (oder per memset mit 0).
struct object { int *v; ... }; ... struct object o; o.v = (int*)malloc(anzahl * sizeof(int)); memset(o.v, 0, anzahl * sizeof(int)); ... o.v[1] = 400; ... /* irgendwann freigeben!! */ free(o.v);
-
also initialisierung geht mit calloc() prima.
returnwerte von malloc() werden in ansi c nicht gecastet. keine widerrede.
-
c.rackwitz schrieb:
also initialisierung geht mit calloc() prima.
returnwerte von malloc() werden in ansi c nicht gecastet. keine widerrede.Hab das früher auch immer gemacht nur um die compiler warnung zu unterdrücken.
Bis ich draufgekommen bin dass die Warnung einfach so verschwindet wenn ich
#include <stdlib.h> einbinde.
Kurt
-
danke, habs jetzt hinbekommen
einfach nen Pointer genommendas ich nie auf sowas kom