C语言入门到精通--static修饰局部变量,全局变量,函数区别
小职 2021-11-23 来源 : 阅读 565 评论 0

摘要:本篇主要介绍了C语言入门到精通--static修饰局部变量,全局变量,函数区别,通过具体的内容展现,希望对C语言的学习有一定的帮助。

本篇主要介绍了C语言入门到精通--static修饰局部变量,全局变量,函数区别,通过具体的内容展现,希望对C语言的学习有一定的帮助。

C语言入门到精通--static修饰局部变量,全局变量,函数区别

 一、static修饰局部变量


①认识局部变量:


局部变量创建在栈区上。栈区上数据窜出的特点是入栈创建出栈销毁,所以说局部变量的作用域仅在相应代码块内,因为出代码块时被销毁。


 ②static修饰局部变量 ⭐


static实际修改了局部变量的存储类型,将原本应该存储在栈区的局部变量存储在静态区。静态区上数据存储的特点是,程序结束变量才被释放。我们常见的全部变量就是存储在静态区上。现在我们分析static修饰后作用域和生命周期的变化:


作用域:作用域不变,只是出作用域不被销毁


生命周期:生命周期变长,程序结束生命周期才结束

C语言入门到精通--static修饰局部变量,全局变量,函数区别

 C语言入门到精通--static修饰局部变量,全局变量,函数区别


 ③栈区静态区存储特点:


栈区

①在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。


②栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(栈溢出问题)


③ 栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。


④向下增长指从栈依次申请的地址在减小


数据段(静态区)


①存放全局变量、静态数据。


②程序结束后由系统释放。


二、static修饰全局变量


①全局变量为什么具有全局属性


 答:因为全局变量具有链接属性


②static修饰全局变量⭐


作用:改变了全局变量的链接属性


作用域: 作用域变小,仅仅局限在当前文件下


生命周期:生命周期没变,因为全局变量任然存储在静态区上。


C语言入门到精通--static修饰局部变量,全局变量,函数区别

C语言入门到精通--static修饰局部变量,全局变量,函数区别



 说明了全局变量的链接属性被修改,全局变量的使用仅仅局限于本文件


三、static修饰函数


可以简化认为函数和全局变量一样具有全局属性,但被static修饰后全局属性消失,使用仅仅局限于本文件。


四、static的意义


【注:static意义这一节摘录于【C语言】关键字static详解 这一文章,大家也可以支持一下】 


1. static 修饰全局变量与函数,实际改变了原有链接属性,使得全局变量与函数被隐藏在本文件,只能在本文件中访问。解决了不同源文件中函数名、变量名冲突的问题,有效降低了程序模块之间的耦合,


2.  static 修饰局部变量,本质是将变量的存储区域改至静态存储区,从而延长了变量的生命周期,程序在走出函数时变量并没有被销毁,直到下次调用函数,变量依然保持原值,并且不再被初始化;从另一方面来看,这本身也是一种隐藏,将变量隐藏在函数中,变量只能在函数中访问,却存在于整个程序。


3. static 修饰变量还有一特点,当变量未初始化时,默认初始化为 0。这是因为在静态存储区,所有内存都被默认置为 0,有时这一特点可减少工作量。


✅  扫码免费获取基础课程·答疑解惑·职业测评

C语言入门到精通--static修饰局部变量,全局变量,函数区别



本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程