当前位置:网站首页>static关键字3种作用,简单粗暴对比,好理解

static关键字3种作用,简单粗暴对比,好理解

2022-08-02 14:02:00 熬夜退役选手337

1、修饰局部变量——称为静态局部变量

我们通过两组代码的对比来看看加了static关键字的作用:

这个是没有加static的

对比变量a输出的结果

       

 

这是加上static:

 

 我们发现没有加上static的变量a在出test()函数作用域的时候被销毁了,而加上static关键字的变量a在出作用域后变量a仍然保留,所以输出的结果是每次a都加1。上次出作用域a是多少,再次进作用域还是不销毁,仍然保留上次的值。

 

2、修饰全局变量——称为静态全局变量

我在add.c创建了一个全局变量,在test.c中,通过extern对全局变量g_val进行了声明后,test.c能够正常打印。

若我在变量 g_val前加上static,test.c运行就无法打印变量的值了。

 

 这里可以看到static对全局变量有保护作用。全局变量是有外部链接属性的,加上static关键字后就变成了内部链接属性。加上static后这个全局变量,这个全局变量只能在本源文件.c里面看到,其他的源文件就看不到了

3、修饰函数——称为静态函数

修饰函数和修饰全局变量我觉得是大同小异吧;

 

加上static,此函数在另一个源文件就无法调用了。

以上就是static的作用;

总结:


1.static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。
2.一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。
3.一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

 

如有帮助,点赞加关注,蟹蟹!!!

如有帮助,点赞加关注,蟹蟹!!!

如有帮助,点赞加关注,蟹蟹!!!

原网站

版权声明
本文为[熬夜退役选手337]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_61638178/article/details/125924003