根据定义变量的位置,变量可分为全局变量和局部变量。局部变量和全局变量在内存中的储存位置不同,作用范围也有差异。
一、局部变量
定义在函数内部的变量称为局部变量,局部变量的作用区域仅限于函数内部,在函数执行完毕后,局部变量就会失去作用。示例:
int qw(){
int a=1; // qw()函数中的局部变量
return 0;
}
int main(){
int a=2; // main()函数中的局部变量
int b=qw();
printf("a=%d,b=%d\n",a,b);
return 0;
}
运行结果:
a=2,b=1
注:"{}" 起到分化代码块的作用,可以使一个函数中使用同名变量。示例:
int main(){
//代码块
{
int a=2;
printf("a=%d\n",a)
}
//代码块
{
int a=3;
printf("a=%d\n",a)
}
return 0;
}
运行结果:
a=2
a=3
二、全局变量
在所有函数(包括main()函数)外定义的变量都称为全局变量,它不属于某个函数,属于源程序。所以它能被程序中的所有函数使用,它的有效范围从定义处到源程序结束。
注:在同一个文件中,全局变量与局部变量同名,则全局变量会被屏蔽,在程序的局部使用局部变量保存数据,示例:
int a=10; // 全局变量a
int main(){
{
int a=5; // 局部变量a
printf("a=%d",a); // 全局变量a被屏蔽
} // 局部变量a失效
printf("a=%d\n",a); // 全局变量a生效
return 0;
} // 全局变量a失效
三、示例案例:“远水不救近火”
#include <stdio.h>
#include <stdlib.h>
int water = 1;
void Ffire(int fire) {
int water = 1;
fire -= water;
}
void msg(int fire) {
if (fire == 0)
printf("火被扑灭啦!\n");
else
printf("警报尚未解除!\n");
}
int main() {
int fire = 1;
Ffire(fire);
printf("“远水”救“近火”?");
msg(fire);
{
int water = 1;
int fire = 1;
fire = water;
printf("“远水”救“近火”?");
msg(fire);
}
return 0;
}
运行结果: