局部变量
- 在函数的开头定义
- 在函数内的符合语句内定义
- 作用范围
在包含该局部变量的函数内有效
一个函数内部,可以在复合函数语句中定义变量,这些变量只在本复合语句中有效,这种符合语句称为分程序或程序块
#include<stdio.h>
int main(){
int a = 0,b = 0;
{
int c;
c = a+b;
}
return 0;
}
c在复合语句中有效,离开复合语句就失效了
- 生命周期
函数调用完就失效
全局变量
- 定义在函数之外的变量叫做全局变量,都是存放在静态存储区中的
- 作用范围
可以被该文件的其他函数所共用,从定义变量的位置到本源文件结束 - 生命周期
在程序的全部执行过程中都占用存储单元
注意:当全局变量和局部变量重名时,全局变量会被屏蔽
静态局部变量
- 作用范围
在编译时赋初值,只赋值一次,每次调用函数时不再重新赋值而只是保留上次函数调用结束时的值 - 生命周期
在程序整个运行期间都不会释放
注意:虽然静态局部变量在函数调用结束候依然存在,但其他函数是不能引用他的。因为他是局部变量,只能被本函数引用,不能被其他函数引用。
静态全局变量
很明显具有全局变量和静态局部变量的性质
从定义到本文件结束,会保留上一次赋的值
#include<stdio.h>
static int a = 10;
int main(){
int a = 9;
printf("a=%d",a);
return 0;
}
当静态全局变量和局部变量冲突时,会遵循就近原则选择局部变量