变量
变量
全局变量
普通全局变量
作用范围
-
普通全局变量的作用范围是程序所有地方
-
只不过用之前需要声明
extem int num
-
注意声明的时候,不要赋值
生命周期 -
程序运行的整个过程,直到程序结束
#include <stdio.h>
//在函数外面定义的变量就是普通的全局变量
int a = 100;
int main(){
return 0;
}
静态全局变量 static
作用范围
-
static 限定静态全局变量只能在它定义的.c源文件有效
生命周期 -
在整个程序的运行过程中,一直存在
-
定义静态的如果不赋初值,默认为0
//定义全局变量的时候用 static 修饰
static int b = 100;
局部变量
普通全局变量
作用范围
-
在函数中定义的,在函数中有效
-
再复合语句定义的,在复合语句中有效
生命周期 -
在函数调用之前,局部变量不占用空间,调用函数的时候,
才为局部变量开辟空间,函数结束了,局部变量就释放了
int main(){
int a = 10; //普通局部变量
{
int a = 10; //普通局部变量
}
return 0;
}
静态的局部变量
作用范围
- 在它定义的函数或者复合语句有效
生命周期
- 第一次调用函数时,开辟空间赋值,函数结束后,不释放
- 以后在调用函数时,就不再为其开辟空间,也不赋初值,用的是以前的那个变量
int main(){
static int b = 10; //静态局部变量
{
static int a = 10; //静态局部变量
}
return 0;
}
变量重名问题
- 在同一作用范围内,不允许变量重名
- 作用范围不同的可以重名
- 局部范围内,重名的全局变量不起作用(就近原则)
外部函数
- 定义的普通函数,都是外部函数
- 即函数可以在程序的任何一个文件调用
内存函数
- static 限定了函数的作用范围,在定义的.c中有效
内部函数与外部函数的区别
- 外部函数:在所有地方都可以调用
- 内部函数:只能在所定义的.c中的函数调用