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
structist erst mit der Klammer nach demreturnvorbei.
Also ist diestructbeimreturnnoch gültig.
Da du ja diestructals Kopie und nicht als Referenz zurück gibst, gibt es da auch keine Probleme.structssind keine Arrays.Und bei der Rückgabe von einem
inthast du ja auch keine Bauchschmerzen.