次のコードを検討してください。
#include <stdio.h>
int main()
{
static int counter=5;
printf ("Counter = %d\n", counter);
if (counter--)
{
main();
}
return 0;
}
コンパイル:
gcc test.c -ansi -Wall –pedantic
実行する:
[root@mars home]# ./a.out
Counter = 5
Counter = 4
Counter = 3
Counter = 2
Counter = 1
Counter = 0
ここで、main()はself()を呼び出しています。
関数の元のスタックフレームは、それ自体が呼び出されるmain()
たびに上書きされるようです。main()
しかし、差出人住所はどうなりますか?関数はそれ自体のスタックフレームに戻ることができますか?
この疑問を明確にするのを手伝ってください。
ありがとう。