目录
关键字-static
用来修饰变量和函数
1.修饰变量
1.1 修饰局部变量
code1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//code_1
void function()
{
int a = 0;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
function();
}
return 0;
}
输出:
code2
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//code_2
void function()
{
//static修饰的局部变量,即静态局部变量
static int a = 0;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
function();
}
return 0;
}
输出:
分析:
结论:static改变了局部变量的生命周期,使得静态局部变量出了作用域后仍然存在,其生命周期变为整个程序(创建->程序结束)
1.2 修饰全局变量
代码1
输出:2022
代码正常运行
代码2
输出:无法输出,代码编译时出现连接性错误
结论:一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。
2. 修饰函数
代码1
输出:5
代码正常运行
代码2
输出:代码报错,编译时出现连接性错误
结论:一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。