static 和 extern 都是C语⾔中的关键字。
static是 静态的 的意思,可以⽤来:
- 修饰局部变量;
- 修饰全局变量;
- 修饰函数。
extern是⽤来声明外部符号的。
在讲解 static 和 extern 之前再讲⼀下:作用域和生命周期。
1. 作用域和生命周期
1.1 作用域
作⽤域(scope)是程序设计概念,通常来说,⼀段程序代码中所⽤到的名字并不总是有效(可⽤)的,而限定这个名字的可⽤性的代码范围就是这个名字的作⽤域。
- 局部变量的作⽤域是变量所在的局部范围;
- 全局变量的作⽤域是整个工程。
1.2 生命周期
⽣命周期指的是变量的创建(申请内存)到变量的销毁(收回内存)之间的⼀个时间段。就好比一个人从刚生下的充满活力婴儿到油尽灯枯的过程,从有到无,从生到死。
- 局部变量的⽣命周期是:进⼊作用域生命周期开始,出作用域生命周期结束;
- 全局变量的⽣命周期是:整个程序的生命周期。
2. static 关键字
2.1 static 修饰局部变量
//代码1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void test()
{
int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for (i = 0; i<5; i++)
{
test<