Struktur initialisieren
-
Hallo
Ich möchte eine Struktur am Anfang von main() in einer Funktion initialisieren. Dazu habe ich folgende Lösung:
//Struktur global vereinbart struct Bezeichner{ char a[80]; char b[80]; char c[30]; } strukturvariable[100]; //Funktion für die Initialisierung Bezeichner Initialisierung(){ Bezeichner strukturvariable[100]={0,0,0}; return(strukturvariable[100]); void main(){ Initialisierung(); }
Meine Frage ist, ob das so Okay ist oder nicht?
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
naja, nicht wirklich...
//Struktur global vereinbart struct Bezeichner{ char a[80]; char b[80]; char c[30]; // du kannst direkt hier eine initialisierung vornehmen, musst du aber für jeden array-eintrag machen... alternativ dazu kannst du auch die 100 in den eckicken // klammern weglassen, dann wird das array so groß gemacht, dass alle initialisierer-elemente reinpassen } strukturvariable[100] = { { "text für a" , "text für b", "text für c" } , {...}, ... } ; //Funktion für die Initialisierung Bezeichner Initialisierung(){ // das ist völlig ungültig, da array-indizies bei 0 beginnen, wenn du also 100 Elemente deklariert hast, kannst du max. 99 also array-index nehmen... // außerdem wird hier nur das letzte element initialisiert... und vorne den "Bezeichner" musst du auch wegnehmen, sonst wird nur ein lokales array angelegt... /*Bezeichner */strukturvariable[100]={0,0,0}; // auch hier ist die 100 ungültig... außerdem, warum gibts du hier den letzten eintrag zurück, eigentlich sinnlos, wenn ich mir deine main-fkt. anschaue... return(strukturvariable[100]); void main(){ // wie gesagt, die gesamte funktion Initialisierung kannst du dir sparen, wenn du die Elemente direkt bei der dekl. (s.o.) initialisierst... Initialisierung(); }
mein vorschlag wäre noch, wenn du alle elemente auf null setzen willst, dass du das in einer schleife machst:
for (int i = 0; i < 100; ++i) strukturvariable[i]= {0, 0, 0};
-
Vielen Dank für deine Hilfe.
-
Ich hasse es! Eigentlich geht's so:
struct Bla { ... } blub[100] = {0};
Jedenfalls wird da alles korrekt mit 0 initalisiert und kein Compiler den ich benutzt habe, hat sich je darüber beschwert. Nur der dumme gcc spuckt Warnungen aus, die sich nicht abschalten lassen
-
todo schrieb:
strukturvariable[i]= {0, 0, 0};
schön wärs...
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.