static的作用

简介: static的作用

用于修饰全局变量、局部变量和函数。


全局变量和局部变量简解:http://t.csdn.cn/gywDj


1、修饰全局变量


            对于整个工程,也就是多个源文件时;因为全局变量具有外部链接属性。


            在一个工程里,在A源文件里定义的全局变量,在B源文件里可以通过extern使用,但是如果这个全局变量被static修饰,则外部链接属性会变成内部链接属性。


     static修饰会把外部链接属性变成内部链接属性,使全局变量作用域变小


81da079355114256b6aec313f14ca965.png

2、局部变量


           局部变量存储在栈区,进入作用域创建,出作用域销毁;但是在被static修饰之后,就存储在了静态区,而存储在静态区的变量,则是到程序结束才释放。但本质上,static修饰只是改变了存储位置,因为存储位置差异,执行效果不同。


       static会改变局部变量的存储位置,并且使它生命周期延长,但不会改变它的作用域。

#include<stdio.h>
void swap() {
  static int d = 3;
  d=5+d;                
   printf("%d\n",d);    //第一次调用时 得d==8;由于static修饰 并且并未销毁
                      //第二次调用时,此时d的值为8,所以经过d=5+d;输出13
}
int main() {
  int a = 10;
   swap(); //第一次调用
     swap();//第二次调用
  }


3、修饰函数

           在修饰全局变量时,描述了全局变量具有外部链接属性,但同样函数也具有外部链接属性;在static的修饰下,也会变成内部链接属性。

         修饰全局变量和修饰函数上有一定的相似度

3b3409f1a4d743ae95a57ebe78396162.png


c语言小知识:


   栈区 局部变量
函数参数
      堆区 malloc
calloc
realloc
free
    静态区 静态变量
全局变量



 创作不易,路过的帅哥美女,动动小手,点点赞咯,蟹蟹啦

                                                                             若文章有问题,请指出,虚心接受批评

目录
相关文章
|
12月前
|
JavaScript 前端开发
JS浮点数精度问题及高精度小数运算:BigNumber解决方案
JS浮点数精度问题及高精度小数运算:BigNumber解决方案
1166 0
|
存储 机器学习/深度学习 算法
Python 图像处理实用指南:1~5
Python 图像处理实用指南:1~5
1221 0
|
9月前
|
安全 算法 数据可视化
工厂人员定位管理系统:提升生产效率、保障作业安全
在智能制造与工业4.0背景下,工厂人员定位管理系统成为提升生产效率和保障作业安全的关键工具。本文详解该系统的核心功能,包括实时定位、历史轨迹回放、巡更打卡、离岗警告及超员/超时提醒,展示其智能化、高效化和安全化的全面优势。通过高精度定位基站与智能算法,系统不仅优化了生产流程,还有效预防了安全事故,助力企业实现高效、智能的生产管理。维小帮提供相关技术文档与专业咨询,助您探索更智能的生产管理之道。
303 11
|
机器学习/深度学习 搜索推荐 算法
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
1205 1
|
人工智能 运维 安全
【年终总结系列 2023】成长与收获:回顾过去、展望未来,加油2024!
【1月更文挑战第1天】年关将至,富余的时间也稍显多了些,遂写下此文,好好回顾一下自己这一年的收获,同时也立下2024年的新年flag。
|
机器学习/深度学习 人工智能 自然语言处理
PVG:用小模型验证大模型输出,解决“黑盒”难题
【8月更文挑战第4天】随AI技术的发展,机器学习系统广泛应用,但在高风险领域如医疗和金融中,其决策需可验证与解释。为此,提出了“Prover-Verifier Games”(PVG)框架,通过两个学习者——证明者与验证者的博弈,前者提供决策及证据,后者评估证据真伪并做决策,以此提升决策透明度。实验显示,在图像分类和自然语言推理任务中,验证者能有效区分真假证据,即便证明者提供虚假信息。不过,PVG也面临计算成本高和适用范围有限等问题。
310 1
|
存储 关系型数据库 数据库
关系型数据库结构化数据存储
【5月更文挑战第10天】
387 7
|
缓存
解决LabVIEW通过OPC Server读取PLC地址时的错误180121602
解决LabVIEW通过OPC Server读取PLC地址时的错误180121602
243 0
|
JSON 关系型数据库 MySQL
Mysql时区差8个小时问题解决
Mysql时区差8个小时问题解决
621 1
|
Docker 容器
containerd快速安装指南🚀
本指南旨在提供一个简洁有效的方法来安装`containerd`。我们将通过一份易于理解的脚本步骤,指导您完成安装🔧。请根据您的实际需求,适当调整`containerd`版本及其相关依赖。