说起C语言的关键字 static 原意为:静态的。
其作用是用来修饰变量和修饰函数
1、(1)修饰局部变量,修饰在函数里面定义的变量,其所存的值在这个函数运行完之后也不会被销毁,下次使用函数仍可以用到这个值。
源代码显示:
//未被static修饰局部变量
#include<stdio.h>
void Add()
{
int x = 1;
int y = 2;
printf("%d ", x+y);
x++;
y++;
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
Add();
}
printf("\n");
return 0;
}
运行显示:
3 3 3 3 3 3 3 3 3 3
static 修饰的局部变量,源代码:
//被static修饰局部变量
#include<stdio.h>
void Add()
{
static int x = 1;
static int y = 2;
printf("%d ", x + y);
x++;
y++;
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
Add();
}
printf("\n");
return 0;
}
运行显示:
3 5 7 9 11 13 15 17 19 21
这说明static修饰的局部变量改变了变量的生命周期,使得其生命周期变为整个程序从开始到结束。
(2)修饰全局变量
静态全局变量,其作用域为被定义的文件,其它文件不可使用,在其定义前面的代码中也不能使用它。
//文件1未被static修饰
//全局变量
int g_num = 5;
//文件2
#include<stdio.h>
extern g_num;
int main()
{
printf("%d\n", g_num);
return 0;
}
代码显示:
5
static 修饰全局变量:
//文件1 被static修饰
//全局变量
static int g_num = 5;
//文件2
#include<stdio.h>
extern g_num;
int main()
{
printf("%d\n", g_num);
return 0;
}
代码显示错误:
无法解析g_num
2、修饰函数,使之成为静态函数,使函数的作用域局限于本文件。好处是,不同的人编写函数时不用担心自己写的函数与其它函数同名而导致错误。
代码与上面全局变量代码类似不在详细写出。
珍&源码