提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
有关static的二三事(c语言)
`
一、static是什么
static是c语言提供的32个关键字之一。它可以用于修饰函数,变量。
于函数而言,其可以改变函数的链接属性,使其只能在本文件中使用,不能被其它文件直接使用。
与变量而言,它可以改变全局变量的作用域,改变局部变量的生命周期。
1.static修饰函数
static未修饰
#include <stdio.h>
void function();
int main()
{
function();
return 0;
}//test.c文件
#include <stdio.h>
void function()
{
printf("hallo world\n");
}//add.c文件
其结果可以正常打印出
static修饰
用static修饰的结果为
其错误原因为
其中LNK为链接问题。所以被static修饰的函数不能在其他文件直接调用,但可以在自身文件中调用
如下:
那么如何在其它文件中间接调用被static修饰的函数?
如下:
再上图中我们在add.c文件中通过函数fun来嵌套函数function,在test.c文件中调用函数fun来间接调用函数function。这样就可以间接调用被static修饰的函数。
所以static也可以称为c语言中的安全保障。
static修饰变量
- 对于全局变量
static未修饰
如下:
static修饰
如下:
所以被static修饰全局变量就不能在除本文件外的文件中使用,改变了其作用域。
- 对于局部变量
static未修饰
如下:
static修饰
如下:
同一个变量定义只能进行一次。
我们都知道局部变量的生命周期是随函数的调用而开始,函数的返回而结束。但被static修饰的局部变量其生命周期被改变成全局变量。
如下:
原因如下:
总结
以上就是关于static用于修饰函数和变量的个人观点。