C语言中static的使用
可修饰类型:
- 在C语言中:static是用来修饰变量和函数的
- 修饰局部变量-称为静态局部变量
- 修饰全局变量-称为静态全局变量
- 修饰函数-称为静态函数
修饰局部变量
-
static修饰局部变量会改变变量的生命周期
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。- 例
- 例
修饰全局变量
-
一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。
-
例
//代码1 ///在add.c文件中写入 int g_val = 2018; //在test.c文件中写入 #include <stdio.h> extern int g_val; int main() { printf("%d\n", g_val); return 0; } //代码2 //在add.c文件中写入 static int g_val = 2018; //在test.c文件中写入 #include <stdio.h> extern int g_val; int main() { printf("%d\n", g_val); return 0; }
-
代码1正常,代码2在编译的时候会出现连接性错误。
-
修饰函数
-
一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。
-
例
//代码1 ///在add.c文件中写入 int Add(int x, int y) { return x + y; } //在test.c文件中写入 #include <stdio.h> //test.c #include <stdio.h> int main() { printf("%d\n", Add(2, 3)); return 0; } //代码2 //在add.c文件中写入 static int Add(int x, int y) { return x + y; } //在test.c文件中写入 #include <stdio.h> int main() { printf("%d\n", Add(2, 3)); return 0; }
-
代码1正常,代码2在编译的时候会出现连接性错误。
-