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.


Anmelden zum Antworten