当前位置: 首页 > news >正文

【static 修饰局部变量、全局变量、函数】

变量在内存中存放的位置

内存大概划分这三个区域

static 修饰局部变量

  1. 当局部变量 a 没有被static修饰时,运行结果如图所示是十个6,这是因为局部变量 a 在内存的栈区中存放,栈区的特点是进入作用域创建,出作用域销毁,而局部变量 a 的作用域在函数 test() 中,在程序第一次执行到 test() 函数里面时,局部变量 a 被创建,在程序执行完 test() 函数时,局部变量 a 被销毁,当程序第二次执行到 test() 函数里面时,局部变量 a 又被重新创建,因此每次执行 test() 函数局部变量 a 都被重新赋值,,导致每次打印的结果都是6
    局部变量未被修饰时
  2. 当局部变量 a 被static修饰时,变量 a 由局部变量变成了静态变量,位置由原本的栈区变成了静态区,静态区的特点是变量创建好后直到程序结束才销毁。由于变量 a 被static修饰成了静态变量,在程序被编译的时候变量 a 就被创建好了,并在程序结束时变量 a 才会被销毁,在程序结束之前一直存储在静态区。并且在执行 test() 函数时,会跳过 static int a = 5; 这条语句,不会对变量 a 进行重新赋值,可以起到一个累加的效果。修饰局部变量

static 修饰全局变量

  1. static 未修饰全局变量时,如图 add.c 源文件定义变量 g_val ,,由于全局变量具有外部链接属性,因此在 test.c 源文件中可以使用变量 g_val (在同一个工程内,并且 test.c 源文件中使用 extern 声明了 g_val 这个外部符号)未被修饰时
  2. static 修饰全局变量时,改变了这个全局变量的链接属性,由外部链接属性变成了内部链接属性,导致 g_val 变量只能在 add.c 源文件中使用(即使 test.c 源文件中使用 extern 声明外部符号 g_val 也不行)

static修饰函数

static修饰函数和static修饰全局变量是一样的,函数是有外部链接属性的,但是被static修饰就变成了内部链接属性,使得这个函数只能在自己所在的源文件中使用(未被修饰时,同样需要extern 声明函数才可在其他源文件中使用)
在这里插入图片描述

http://www.lryc.cn/news/590617.html

相关文章:

  • k8s之持久化存储流程
  • Zabbix监控K8S的PV信息详细教程!
  • 重学前端007 --- CSS 排版
  • 前端 oidc-client 静默刷新一直提示:Error: Frame window timed out 问题分析与解决方案
  • Linux驱动12 --- Linux2.6 开发方法文件接口
  • C语言 --- 函数递归
  • Docker化Web服务部署全景指南:从基础服务器到企业级应用
  • 暑期算法训练.2
  • 【代码】基于CUDA优化的RANSAC实时激光雷达点云地面分割
  • 前端vue3获取word二进制流在页面展示
  • FAISS深度学习指南:构建高效向量检索系统的完整方法论
  • Node.js Process Events 深入全面讲解
  • 网络安全初级(Python实现sql自动化布尔盲注)
  • flink sql如何对hive string类型的时间戳进行排序
  • 设计模式三:观察者模式 (Observer Pattern)
  • ubuntu--自启动程序
  • 7.isaac sim4.2 教程-Core API-数据记录
  • 【cobalt strike手册0x06】Sleep Mask
  • JAVA进阶 项目实战:汽车租聘系统
  • 关于squareLineStudio软件使用步骤教程(LVGL软件组件编程)
  • Linux应急Rootkit后门查杀病毒查杀软件
  • 0系统与软件工程-标准体系
  • 1软件工程概念及其基本要素-思考题
  • 基于paddleDetect的半监督目标检测实战
  • 【论文阅读】A Survey on Knowledge-Oriented Retrieval-Augmented Generation(4)
  • 基于C#开发solidworks图库中文件(SLDPRT,SLDASM,SLDDRW等)转换为HTML和PDF,提供批量和实时转换
  • 【论文阅读 | IF 2025 | COMO:用于多模态目标检测的跨 Mamba 交互与偏移引导融合】
  • 【论文阅读 | CVPR 2023 |CDDFuse:基于相关性驱动的双分支特征分解的多模态图像融合】
  • Python+Tkinter制作音频格式转换器
  • 使用token调用Spring OAuth2 Resource Server接口错误 insufficient_scope