Bitte beachten Sie den folgenden Code:
#include <stdio.h>
int main()
{
static int counter=5;
printf ("Counter = %d\n", counter);
if (counter--)
{
main();
}
return 0;
}
Kompilieren:
gcc test.c -ansi -Wall –pedantic
Ausführen:
[root@mars home]# ./a.out
Counter = 5
Counter = 4
Counter = 3
Counter = 2
Counter = 1
Counter = 0
Hier ruft main() sich selbst() auf.
Es scheint, dass main()
Der ursprüngliche Stackframe der Funktion wird jedes Mal überschrieben, wenn main()
von selbst aufgerufen wird.
Aber wie lautet die Absenderadresse? Kann eine Funktion zu ihrem eigenen Stackframe zurückkehren?
Bitte helfen Sie mir, diesen Zweifel zu klären.
Gracias.