当前位置:网站首页>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修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。
如有帮助,点赞加关注,蟹蟹!!!
如有帮助,点赞加关注,蟹蟹!!!
如有帮助,点赞加关注,蟹蟹!!!
边栏推荐
- Flask框架
- 浅浅写一下PPOCRLabel的使用及体验
- paddle window10环境下使用conda安装
- 【Tensorflow】AttributeError: module 'keras.backend' has no attribute 'tf'
- yolov5,yolov4,yolov3乱七八糟的
- yolov5改进(一) 添加注意力集中机制
- Raj delivery notes - separation 第08 speak, speaking, reading and writing
- window10下半自动标注
- A little thought about password encryption
- 理解TCP长连接(Keepalive)
猜你喜欢

chapter7

8580 合并链表

The specific operation process of cloud GPU (Hengyuan cloud) training

(ROS) (03) CMakeLists. TXT, rounding

How does Apache, the world's largest open source foundation, work?
ROS通信 —— 话题(Topic)通信](/img/21/d79f2c4e246eb9ea39df9c7435bb36.png)
[ROS](06)ROS通信 —— 话题(Topic)通信

window10 lower semi-automatic labeling

Flask框架的搭建及入门

网络剪枝(1)

MobileNet ShuffleNet & yolov5替换backbone
随机推荐
Flask项目的完整创建 七牛云与容联云
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十章)
STM32(F407)—— 堆栈
PHP open source customer service system _ online customer service source code PHP
(ROS) (03) CMakeLists. TXT, rounding
【Tensorflow】AttributeError: module 'keras.backend' has no attribute 'tf'
Verilog Learning Series
Flask请求应用上下文源码分析
[ROS](05)ROS通信 —— 节点,Nodes & Master
[ROS](02)创建&编译ROS软件包Package
[ROS] Introduction to common tools in ROS (to be continued)
Deep learning framework pytorch rapid development and actual combat chapter4
Camera Hal(Hal3)层修改Preview流
8576 Basic operations of sequential linear tables
Sentinel源码(一)SentinelResourceAspect
Chapter6 visualization (don't want to see the version)
[ROS] The difference between roscd and cd
drf序列化器-Serializer
redis延时队列
跑yolov5又出啥问题了(1)p,r,map全部为0