c语言初学者求助
#include <stdio.h>int square(int i)
{
return i*i;
}
int main() 为什么这个程序可以一开始设一个变量i,还可以在循环里又设一个静态变量i,静态变量的值
{ 还不受外边i的影响,还与for条件里的i能区分开,只在循环里起作用,等循环退出了以后静态变量i
int i=0; 又不起作用了。这是什么原理,静态变量不是main函数走完了以后才释放吗,printf怎么区分后面的
i = square(i); i是静态变量还是自动变量?有点蒙,求指点 ,十分感谢。
for(;i<3;i++)
{
static int i = 1;
i += square(i);
printf("%d,"i);
}
printf("%d\n",i);
return 0;
} 先是外部i=0,进入循环后,出现一个静态局部变量i,你可以把它当作另一个变量j
现在的是copy内i=1,然后i+=s(i),变成i=2了,zd输出2
然后外部i=2,判断外部i<3,再次进入循环,此时的内部i已经等于2了,继续使用2值
i+=s(i)后,i=6,输出6
接下来外部i=4,判断外部i<3,跳出循环,输出外部i是4百度的解释
不过谁会这么写代码啊…… 变量作用范围有两个要点,一是基本原则就近生效,二是作用范围以代码块为基本范围。main函数中定义了局部变量i,之后没有同名变量i能够覆盖它,那么那么局部变量i会在整个main函数中生效。只不过,for循环的语句体有一个{}圈起来来的代码块,这种代码块意味着独立的小王国。这里面定义了一个同名的静态变量i,那么根据就近原则,这个新定义的静态i会在for循环的语句体{}中始终生效。 作用域不一样吧,好比强龙压不住地头蛇,楼上正解
页:
[1]