Geltungsbereich von Variablen



  • Hallo ich habe gerade diesen Code vor mir:

    #include <stdio.h>
    #include <stdlib.h>
    
    struct array{ int wert[3]; };
    
    struct array init_array(void) {
       int i;
       struct array z;
    
       for(i = 0; i < sizeof(struct array) / sizeof(int); i++) {
          printf("Wert %d eingeben: ",i);
          scanf("%d",&z.wert[i]);
       }
       return z;
    }
    

    Hier wird eine struct namens z angelegt und anschließend zurückgegeben.
    Ich meine aber in Erinnerung zu haben, dass in einem "Codeblock" (in diesem Fall die Funktion) deklarierte Variablen am Ende gelöscht werden? Müsste das hier nicht zu undefinierten Verhalten führen?



  • Der Scope für die struct ist erst mit der Klammer nach dem return vorbei.
    Also ist die struct beim return noch gültig.
    Da du ja die struct als Kopie und nicht als Referenz zurück gibst, gibt es da auch keine Probleme.

    structs sind keine Arrays.

    Und bei der Rückgabe von einem int hast du ja auch keine Bauchschmerzen.


Anmelden zum Antworten