单片机/C/C++八股:(三十一)static 关键字的作用
上一篇下一篇static 关键字的作用static[adj] 静态的总结在最后面可直接看static变量称为静态存储类型的变量所谓静态就是变量在程序运行期间一直存在。static变量的特点如下在内存中以固定地址存放而不是以堆栈方式存放程序运行多次之后依然存放在同一地址存在.bss未初始化或初始化为0或.data已初始化为非0值段不在栈上只要程序没结束此变量就不会消失即使放在子函数中被反复调用每次调用的时候都会保留调用结束的值static修饰的全局变量/函数其他文件无法使用其他文件即使使用extern声明也无法访问该变量如果没有初始化那么静态变量的初始值默认是 0 。举例有如下程序#includestdio.hvoidfun(){inta10;a;printf(%d %p\n,a,a);}intmain(){inti0;while(i5){fun();i;}return0;}程序运行之后的结果为运行两次/* 第一次运行结果 */1100000063867ff90c1100000063867ff90c1100000063867ff90c1100000063867ff90c1100000063867ff90c/* 第二次运行结果 */110000002554dff7dc110000002554dff7dc110000002554dff7dc110000002554dff7dc110000002554dff7dc// 两次运行分配的地址都是不确定的现在将变量 a 定义为静态变量并且不初始化#includestdio.hvoidfun(){staticinta;a;printf(%d %p\n,a,a);}intmain(){inti0;while(i5){fun();i;}return0;}程序运行之后的结果为运行两次/* 第一次运行结果 */100007ff74fb4a000200007ff74fb4a000300007ff74fb4a000400007ff74fb4a000500007ff74fb4a000/* 第二次运行结果 */100007ff74fb4a000200007ff74fb4a000300007ff74fb4a000400007ff74fb4a000500007ff74fb4a000// 两次运行分配的地址都是固定的并且初始值为 0 1后才打印【总结】static关键字有三种用法定义静态局部变量使其生命周期延长到程序结束值会随着每次调用而改变存放地址未初始化或显示初始化为0存在 .bss段初始化为非0值则存在 .data 段不在栈上。定义静态全局变量限制作用域别的文件不可调用即使同一模块的 .c 和 .h 文件之间用extern也不行如key.c/key.h存放地址未初始化或显示初始化为0存在 .bss段初始化为非0值则存在 .data 段不在栈上。定义静态函数限制函数作用域别的文件不可调用即使同一模块的 .c 和 .h 文件之间用extern也不行如key.c/key.h和普通函数一样存放在代码段.text中。// 1. 静态局部变量staticintcount0;// 2. 静态全局变量staticintglobalVar;// 3. 静态函数staticvoidlocalFunc(void){}【注意】在 C 中结构体成员不可使用static定义C 中可以但结构体本身可以用static定义解释在C中成员只是结构体布局的一部分无独立存储而static是存储类说明符只适用于变量和函数不能用于成员。举例// 不可以成员不能是 staticstructS{staticintx;// 编译错误};// 可以结构体变量可以是 staticstaticstructSobj;在 C 中static 定义的变量必须使用 “编译时常量表达式” 进行初始化例如数字、字符、字符串字面量、NULL、sizeof表达式、取静态/全局变量的地址等编译时就能确定的值解释因为静态变量和全局变量在程序启动时main执行前就已经分配好内存并完成初始化此时整个运行时环境堆栈、函数调度等尚未就绪无法执行任何需要 CPU 运行的代码。错误行为举例// 严重错误intmain(){staticint*pmalloc(sizeof(int));*p20;free(p);pNULL;return0;}// 正确intmain(){staticint*pNULL;// p存放在.bss段if(pNULL){pmalloc(sizeof(int));// 运行时赋值完全合法}*p20;free(p);pNULL;return0;}不过一般不会用static来定义用于malloc的指针纯属突发奇想。

相关新闻

针对西安哪里卖商用洗地机,分析工业场景选型与上门试机

针对西安哪里卖商用洗地机,分析工业场景选型与上门试机

西安工业场景洗地机选型指南与本地化服务分析在西北地区的清洁设备采购市场中,许多物业经理和工厂负责人都在关注西安哪里卖商用洗地机,旨在寻找能够适配高强度作业环境的清洁解决方案。需要明确的是,本文并非官方排名或商业推广,…

2026/10/11 0:14:40 阅读更多 →
Spring Boot日志管理实战:从Logback配置到性能优化全解析

Spring Boot日志管理实战:从Logback配置到性能优化全解析

1. 项目概述:为什么日志管理是Spring Boot项目的基石在任何一个后端项目的开发与运维过程中,日志系统都扮演着“黑匣子”的角色。它不直接产生业务价值,却是我们排查线上问题、分析系统行为、监控应用健康状态最可靠的依据。尤其在微服务架构…

2026/10/11 0:14:40 阅读更多 →
数字经济专业毕业生的多元职业路径

数字经济专业毕业生的多元职业路径

数字经济时代,专业人才如何破局?随着大数据、人工智能、云计算等技术的深度融合,数字经济已成为全球经济增长的核心引擎。对于即将走出校园的数字经济专业毕业生而言,面对的是一个充满机遇与挑战的广阔天地。他们既拥有扎实的经济…

2026/9/27 23:13:05 阅读更多 →

最新新闻

物理与动画系统架构深度解析:从帧循环到Transform协同的引擎设计要点

物理与动画系统架构深度解析:从帧循环到Transform协同的引擎设计要点

做引擎这几年,最常被问到的一个问题就是:物理和动画这两个模块放在一起讲,是不是有点强行组CP?其实不是,这俩在帧循环里的位置紧挨着,数据耦合又深,渲染那边等着同一份Transform结果。你拆开看会…

2026/10/12 2:06:09 阅读更多 →
28岁没房没车别焦虑:转行前先搞懂副业与财富自由的底层逻辑

28岁没房没车别焦虑:转行前先搞懂副业与财富自由的底层逻辑

28岁,无车无房,收入一眼望到头,拿着几千块的工资,晚上躺床上刷手机,看到别人晒新房晒婚礼,再想想自己连恋爱都不敢谈,一种说不出的恐慌直接顶到嗓子眼儿。这种日子我太熟悉了,因为我…

2026/10/12 2:06:09 阅读更多 →
给Claude Code接入MCP搜索:告别过期答案,实时联网查资料

给Claude Code接入MCP搜索:告别过期答案,实时联网查资料

我印象最深的一次,是在某次项目重构里要用到一个库的最新接口。Claude Code 三两下就把代码写完了,看起来头头是道,结果一编译直接报错。后来我自己上官网翻文档才发现,这个库在两三周前刚改过一次函数签名,而 Claude …

2026/10/12 2:06:09 阅读更多 →
Ant Design Landing 设计资源页解析:Sketch 源文件、数据模型与前端实现

Ant Design Landing 设计资源页解析:Sketch 源文件、数据模型与前端实现

前端文档 【免费下载链接】ant-design-landing :mountain_bicyclist: Landing Pages of Ant Design System 项目地址: https://gitcode.com/gh_mirrors/antd/ant-design-landing 点击查看 免费下载 Ant Design Landing(ant-design-landing)是…

2026/10/12 2:06:09 阅读更多 →
Apache Beam Python 的 Mean 聚合变换:Globally 与 PerKey 用法及底层实现

Apache Beam Python 的 Mean 聚合变换:Globally 与 PerKey 用法及底层实现

【免费下载链接】beam Apache Beam is a unified programming model for Batch and Streaming data processing. 项目地址: https://gitcode.com/gh_mirrors/beam18/beam 点击查看 免费下载 本文围绕 Apache Beam Python SDK 中计算算术平均值的 Mean 聚合变换展开…

2026/10/12 2:06:09 阅读更多 →
Jenkins 2.346.1 内网离线安装插件:依赖解析与版本匹配实战

Jenkins 2.346.1 内网离线安装插件:依赖解析与版本匹配实战

简介:本资源面向在内网、隔离网等无外网环境中部署Jenkins的运维与DevOps工程师,针对Jenkins 2.346.1无法在线拉取插件的问题,提供一套完整的离线插件安装方案。压缩包共约2000个文件,整体314.4MB,涵盖90个jpi与30个hp…

2026/10/12 2:05:08 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →