局部变量

  • 在函数的开头定义
  • 在函数内的符合语句内定义
  • 作用范围
    在包含该局部变量的函数内有效
一个函数内部,可以在复合函数语句中定义变量,这些变量只在本复合语句中有效,这种符合语句称为分程序或程序块
#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;
}

P2(}BBGD0}APOZA_E_P`C08.png

当静态全局变量和局部变量冲突时,会遵循就近原则选择局部变量