strukts initialisieren
-
Hallo,
Wieso funktioniert folgendes nicht(kompiliert nicht):
typedef struct{ int x, y; }a; typedef struct{ int z; a my_as[]; }b; int main(void){ a my_as[]={ {1,2}, {2,4}, {3,6} }; b my_b={3,&my_as}; // funktioniert nicht b my_b={3,{{1,2},{2,4},{3,6}}}; // funktioniert auch nicht return 1; }
Am liebsten würde ich das in einer Zeile initialisieren können und nicht indem ich vorher noch hilfsvariablen anlege. Aber bislang funktioniert es noch überhaupt nicht. Also, wie initialisiere ich eine Variable vom Typ b?
Danke schonmal,
n00dle
-
Der Member my_as von b kann nicht direkt initialisiert werden, nur der Zugriff per . oder -> ist möglich. Allerdings resultiert das wahrscheinlich in undefiniertem Verhalten, weil b im Allgemeinen nicht groß genug sein wird, um das komplette Array zu enthalten - mithin reserviert die Deklaration
b my_b;
nicht genug Speicher. Dieser Spezialität von C eines flexiblen Arraymembers als letztem struct-Element ist im Prinzip ohnehin nicht erforderlich - inwieweit dessen Verwendung als stilistisch gut angesehen wird, kann ich aber nicht beurteilen.