局部变量和全局变量
先看两个例子:
int main()
{
int i=520;
printf("before,i=%d\n",i);
for(int i=0;i<10;i++)
{
printf("%d\n",i);
}
printf("after,i=%d\n",i);
return 0;
}
void a();
void b();
void c();
int count=0;//如果不对全局变量进行初始化,那么它会自动初始化为0;
void a()
{
count++;
}
void b()
{
count++;
}
void c()
{
count++;
}
int main()
{
a();
b();
a();
printf("他被袭击了%d次",count);
return 0;
}
注:
①如果在函数内部存在一个与全局变量同名的局部变量,编译器不会报错,而是在函数中屏蔽此全局变量。
②如果不对全局变量进行初始化,那么它会自动初始化为0;
例:
void test1();
int a;
int b=100;
void test1()
{
int b;
a=880;
b=120;
printf("test1,a=%d,b=%d\n",a,b);
}
int main()
{
printf("main1,a=%d,b=%d\n",a,b);
test1();
printf("main2,a=%d,b=%d\n",a,b);
return 0;
}
通过例子发现:如果不对全局变量进行初始化,那么它会自动初始化为0,在例子中b全局变量赋值了,所以在test中改变的是局部变量b的值,而a并没有在test中有相同的局部变量,所以test修改的是全局变量a。
另外注意extern关键字是告诉编辑器,这边量我后边定义了,先别报错
void a();
void a()
{
extern count;//用extern关键字是告诉编辑器,这边量我后边定义了,先别报错
count++;
}
int count=0;
int main()
{
a();
printf("他被袭击了%d次",count);
return 0;
}
最后程序中不要大量使用全局变量,因为全局变量会从定义一直到程序结束才会销毁;