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 demreturn
vorbei.
Also ist diestruct
beimreturn
noch gültig.
Da du ja diestruct
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.