局部变量
定义在函数内部的变量称为局部变量,局部变量的作用域仅限于函数内部
代码示例:
#include <stdio.h>
void f(){
int a=1;
printf("%d",a);
}
int main(){
f();
printf("%d",a);
}
运行结果:
在函数执行完毕之后,局部变量就会失去作用。 '因此main函数中的printf("%d",a)'会报错
修改后
#include <stdio.h>
void f(){
int a=1;
printf("%d\n",a);
}
int main(){
int a=2;
f();
printf("%d",a);
}
运行结果:
全局变量
在所有函数(包括main()函数)外部定义的变量称为全局变量,它不属于某个函数,属于源程序。因此全局变量可以被程序中的所有函数使用,它的有效程序从定义处开始到源程序结束。
代码示例1:
int a=1;
void f(){
printf("在函数f的内部:a=%d\n",a);
}
int main(){
f();
printf("在函数main的内部:a=%d",a);
}
运行结果:
若在同一个文件中,局部变量和全局变量同名,则全局变量会被屏蔽,在程序的局部使用局部变量保存变量
代码示例2:
int a=1;
void f(){
a=2;
printf("在函数f的内部:a=%d",a);
}
int main(){
f();
printf("在函数main的内部:a=%d",a);
}
运行结果:
综合
int a=200; //全局
void f(){
int a=1;//局部
a=2;//使用局部变量
printf("在函数f的内部:a=%d\n",a);//2
}
int main(){
f();
//在main函数中,绝对不可能访问
//f中的局部变量
//此处的a就是局部变量a
printf("在函数main的内部:a=%d",a);//200
}
运行结果:
int a = 200;
int b=100;
void f(){
int a=1;
b=2;
printf("a=%d, b=%d\n",a,b);
}
int main(){
f();
printf("a=%d, b=%d",a,b);
}
运行结果:
void f(int m){
m +=10;
}
int main(){
int m =1;
printf("m=%d\n",m);
f(m);
printf("m=%d",m);
}
运行结果:
void f(int x,int y){
x +=1;
y -=1;
}
int main(){
int x=10;
int y=10;
f(x,y);
printf("x=%d,y=%d",x,y);
}
运行结果:
//局部变量的产生场景
// 1.for(int i)
// 2.{ }. if(){} while(){ } { }
int main(){
// 循环变量i,只能在循环的内部使用。
// 理解为局部变量。
int i=0;
for(i=0;i<10;i++){
printf("%d",i);
// for(int j=0;j<3;j++){
// printf("%d",i);
// }
}
printf("i=%d",i);
}
int main(){
{
int i=1;
printf("i=%d",i);
}
int i=2;
printf("i=%d",i);
}