Return einen Zeiger, der auf eine lokale Variable [duplicate] zeigt

Diese Frage hat hier bereits eine Antwort:

Wie kann man mit Zeigern von einer anderen Funktion auf eine lokale Variable zugreifen? 9 answers

Ich weiß nicht warum das funktioniert. Da x eine lokale Variable ist, dachte ich, ich würde eine Fehlermeldung erhalten, wenn ich versuche, sie zurückzugeben. Der erste Ausdruck funktioniert jedoch einwandfrei, gibt dann aber nur den Wert 0 aus. Kann mir jemand erklären, was hier vor sich geht?

#include <stdio.h>

int* func1() {
    int x = 123123;
    int *y = &x;
    return y;
}

int main()
{
    int* c = func1();
    printf("%d\n", *c); // output: 123123
    printf("%d\n", *c); // output: 0
    return 0;
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage