Ich untersuche die Funktionsweise einer automatischen Variablen. Ich weiß, dass es nur innerhalb des Blocks oder der Funktion, in der es deklariert ist, zugänglich ist und seine Lebensdauer innerhalb derselben Funktion oder desselben Blocks liegt. Also das folgende Stück Code versuche ich zu überprüfen.Verwendung der automatischen Variablen außerhalb ihres Bereichs in C
/Erklärung Header-Dateien/
void testfn(void);
int *p;
int main(void)
{
testfn();
print("%d\n",*p);
return 0;
}
void testfn(void)
{
int x=444;
p=&x;
}
Der Ausgang ist - 444
Ich wundere mich, dass, wenn die testfn(); beendet, wird die Variable x zerstört. Dann wie in der Hauptfunktion der Zeiger (* p) druckt 444. Wie das funktioniert ... oder wenn mir etwas fehlt. Bitte klären Sie meine Zweifel.
Dank
undefined Verhalten ... – dandan78
Das ist die Sache mit undefiniertem Verhalten: Es kann wie das erwartete Verhalten aussehen, wenn es tatsächlich nicht ist.Es ist undefiniert, leider kein falsches Verhalten definiert. –
Die Adresse hat den gleichen Wert, den sie hatte, als die Funktion aktiv war, aber der Speicher, auf den sie zeigt, ist dieser Funktion nicht mehr zugeordnet. Aber das ist alles eine echte Zeitverschwendung. Ich weiß, dass du versuchst zu lernen, aber das solltest du hier nicht veröffentlichen. –