摘要:本篇主要介绍了C语言入门到精通--static修饰局部变量,全局变量,函数区别,通过具体的内容展现,希望对C语言的学习有一定的帮助。
本篇主要介绍了C语言入门到精通--static修饰局部变量,全局变量,函数区别,通过具体的内容展现,希望对C语言的学习有一定的帮助。
一、static修饰局部变量
①认识局部变量:
局部变量创建在栈区上。栈区上数据窜出的特点是入栈创建出栈销毁,所以说局部变量的作用域仅在相应代码块内,因为出代码块时被销毁。
②static修饰局部变量 ⭐
static实际修改了局部变量的存储类型,将原本应该存储在栈区的局部变量存储在静态区。静态区上数据存储的特点是,程序结束变量才被释放。我们常见的全部变量就是存储在静态区上。现在我们分析static修饰后作用域和生命周期的变化:
作用域:作用域不变,只是出作用域不被销毁
生命周期:生命周期变长,程序结束生命周期才结束
③栈区静态区存储特点:
栈区
①在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。
②栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(栈溢出问题)
③ 栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。
④向下增长指从栈依次申请的地址在减小
数据段(静态区)
①存放全局变量、静态数据。
②程序结束后由系统释放。
二、static修饰全局变量
①全局变量为什么具有全局属性
答:因为全局变量具有链接属性
②static修饰全局变量⭐
作用:改变了全局变量的链接属性
作用域: 作用域变小,仅仅局限在当前文件下
生命周期:生命周期没变,因为全局变量任然存储在静态区上。
说明了全局变量的链接属性被修改,全局变量的使用仅仅局限于本文件
三、static修饰函数
可以简化认为函数和全局变量一样具有全局属性,但被static修饰后全局属性消失,使用仅仅局限于本文件。
四、static的意义
【注:static意义这一节摘录于【C语言】关键字static详解 这一文章,大家也可以支持一下】
1. static 修饰全局变量与函数,实际改变了原有链接属性,使得全局变量与函数被隐藏在本文件,只能在本文件中访问。解决了不同源文件中函数名、变量名冲突的问题,有效降低了程序模块之间的耦合,
2. static 修饰局部变量,本质是将变量的存储区域改至静态存储区,从而延长了变量的生命周期,程序在走出函数时变量并没有被销毁,直到下次调用函数,变量依然保持原值,并且不再被初始化;从另一方面来看,这本身也是一种隐藏,将变量隐藏在函数中,变量只能在函数中访问,却存在于整个程序。
3. static 修饰变量还有一特点,当变量未初始化时,默认初始化为 0。这是因为在静态存储区,所有内存都被默认置为 0,有时这一特点可减少工作量。
✅ 扫码免费获取基础课程·答疑解惑·职业测评
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号