请考虑以下代码:
#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() 调用了它自己()。
似乎main()
每次main()
自己调用函数的原始堆栈帧都会被覆盖。
但是返回地址是什么?函数可以返回到自己的堆栈帧吗?
请帮我澄清这个疑问。
谢谢。