`
- 浏览:
2046425 次
- 性别:
- 来自:
北京
-
1.预备知识:动态存储和静态存储
内存中供用户使用的存储空间可以分为三部分,即: 程序区,静态存储区, 动态存储区
数据分别存放在静态存储区和动态存储区中。全局变量存储在静态存储区中,在程序开始执行时给全局变量分配存储单元,程序执行完毕就释放这些单元。它们的生命周期是整个程序运行的生命周期。在程序执行过程中它们占据固定的存储单元,而不是动态地分配和释放。
在动态存储区中存放一下数据:1)函数的形参 2)函数中的自动变量(未加static声明的普通局部变量)3)函数调用时的现场保护和返回地址
2.static声明的局部变量
函数中的局部变量,如果不用关键字static加以声明,编译系统对它们是动态分配存储空间的。函数的形参和在函数中定义的变量都属于这一类。在调用函数时,系统给形参和函数中定义的变量冬天分配存储空间,数据存储在动态存储区中。在函数调用结束时就自动释放这些空间。
有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的内存空间不进行释放,在下一次调用函数时保留上一次函数调用结束时的值。这时就应该声明该函数是静态局部变量。
静态局部变量有以下几个特点:
(1)静态局部变量在静态存储区中分配存储单元。在整个程序运行的过程中都不进行释放
(2)为静态局部变量赋初值是在编译时进行的。只赋初值一次,在程序运行时就已经有初值了。
(3)如果在定义局部变量时不赋初值,对静态变量自动赋值0 或空字符。
(4)虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的,也就是说,在其他函数中它是“不可见”的。
3.static声明静态外部变量
普通的外部变量可以供整个程序使用,在一个外部变量的源文件中声明的外部变量,在另一个文件中用extern关键字加以引用。
用static关键字声明的外部变量,只能在其声明的源文件中进行访问,在其他文件中是无法访问的。因此,static关键字修饰的外部变量,为其加上了访问域。
然而,值得注意的是,无论是加上static的外部变量或是没有加static的外部变量,数据都要存储在静态的存储区中。
4.总结
static修饰全局变量,则该变量在本文件中有效;static修饰局部变量,则该变量可保存状态;static修饰函数,则函数仅在本文件中有效。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
微信Java开发工具包,支持包括微信支付、开放平台、公众号、企业微信、视频号、小程序等微信功能模块的后端开发。
如何制作MC(需要下载海龟编辑器2.0,下载pyglet==1.5.15)
民宿预订管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
内容概要:本文详细介绍了如何利用MATLAB解决各种类型的常微分方程(组),包括解析解和数值解的方法,并给出了具体的实例以及求解步骤。重点探讨了dsolve()函数的使用来获取方程的符号解,以及各类Solver命令如ode45、ode23等用于求数值解的特点与适用情况。 适合人群:高校理工科专业学生、科研工作者,尤其对数学建模感兴趣的研究人士。 使用场景及目标:帮助用户理解和应用MATLAB解决实际工程和科学研究中的微分方程问题,提升问题解决效率。 其他说明:除了理论介绍外,文档还提供了多个实际案例及其相应的MATLAB脚本供参考和练习,有助于加深理解和提高动手能力。
qwen2.5 + langchain pip依赖包
SeeJoPlayer视频播放器
滑动屏幕调整屏幕亮度
Fragment动画效果
能够快速修复系统缺失的各类DLL文件
Android——仿美图秀秀和IOS系统的相机胶卷
线上书籍查阅系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等
仿Iphone风格翻页控件,源码及Jar包
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
内容概要:本文围绕考研高等数学中的几个重点知识点——极限、导数、积分、微分方程等进行详尽解析。每章选取一个经典题目作为示例,不仅展示了具体的解题步骤,还提供了针对该类型问题的方法论指导,使考生能在理解和记忆这些基础知识的同时提高解题效率。 适用人群:备战研究生入学考试的学生,尤其需要强化数学基础知识的同学。 使用场景及目标:本材料适用于高等数学复习阶段,旨在帮助学生巩固重要数学概念,掌握有效的解题策略,在考试中表现更加出色。 其他说明:文中提供的示例覆盖了多种常考题型,建议边学习理论知识点边动手尝试解题,以达到最佳学习效果。
c语言通讯录管理系统源码
Android高手过招 FAQ
wiwf-web-manage
微信开发sdk,微信二次开发SDK,微信开发API接口协议。非微信ipad协议、非mac协议非安卓协议,api可实现微信99功
面经(android)