void main()
{
static int a=5;
printf("%i",a--);
if(a)
main();
}
该程序打印54321。有人可以解释为什么吗?
(1)在函数内部使用静态函数...表示变量一旦初始化,它就保留在内存中,直到程序结束。您可以认为它是变量一直存在,并保持其值,直到程序完全结束为止。例如,您可以使用静态变量来记录函数被调用的次数,只需将这些行包括在内:static int count = 0; 和计数++; 在函数内部。
(2)因为count是一个静态变量,所以“ static int count = 0;”行 只会执行一次。每当调用该函数时,count都将分配有最后一个值。
因此,发生了两件事:从(1)开始,a
整个程序将继续存在。从(2)开始,的声明/初始化a
将只发生一次。随后对函数的递归调用将不会重新声明/重新初始化a
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句