首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

存储类型和作用域,上代码

2012-08-10 
存储类型和作用域,下代码#include stdio.hint main(){int ifor(i0i6i++){staticint a0printf(%d

存储类型和作用域,下代码
#include <stdio.h>
int main()
{
int i; 
for(i=0;i<6;i++)
{
static int a=0;
printf("%d",a);
a++;

printf("%d",a);————????出问题
}



解释下a,是和它的作用域有关?

[解决办法]
是的。a属于for循环那个大括号内的。出了这个大括号就不存在了。
[解决办法]
这里这个static是没有什么作用的,当sataic修饰全局变量时,作用是其他文件不能引用该变量;在你的程序中,加不加static都没影响。
当static在函数中修饰局部变量时,该变量为静态变量,不再存放在堆栈中,函数结束也不会销毁,每次进入该函数的时候变量值还是上次函数退出时候的值。静态变量只能初始化一次.
[解决办法]
虽然static变量的存储期限是静态的,但用在这里时,变量a的作用域是for循环内的块作用域,超出这个块后变量不可见。

热点排行