首页
移动开发
物联网
服务端
编程语言
企业开发
数据库
业界资讯
其他
搜索
C语言 变量的作用域和生命周期(转)
其他
2019-04-21 11:54:42
阅读次数: 0
转自 https://blog.csdn.net/u011616739/article/details/62052179
a.普通局部变量
属于某个{},在{}外部不能使用此变量,在{}内部是可以使用。执行到普通局部变量定义语句,才会分配空间,离开{},自动释放。
普通局部变量不初始化,默认值为随机数。
b.static局部变量
属于某个{},在{}外部不能使用此变量,在{}内部是可以使用。在编译阶段就已经分配空间,初始化只能使用常量。
static局部变量不初始化,默认值为0。离开{},static局部变量不会释放,只有整个程序结束才释放。
注意:静态局部变量的作用域属于某个{},但是它的生命周期却是从编译阶段到整个程序结束。
c.普通全局变量
在编译阶段分配空间,只有
整个程序结束才释放
。普通全局变量只要定义了,任何地方都能使用,
使用前需要声明所有的.c文件
,只能定义一次普通全局变量,但是可以声明多次(外部链接)。
注意:全局变量的作用域是全局范围,但是在某个文件中使用时,必须先声明。
d.static全局变量
在编译阶段分配空间,只有整个程序结束才释放。static全局变量
只能在定义所在的文件中
使用此变量(内部链接)。不同的.c文件,可以定义一次static全局变量。
e.extern函数和static函数的区别(作用域)
extern函数所有文件都是调用,所有文件中只能定义一次extern函数。
static函数只能在定义所在的文件中调用此函数,不同文件,可以定义一次static函数。
怎样记忆C语言中的作用域和生命周期?
要理解C语言中各种变量的作用域和生命周期,必须结合C语言的内存管理。详情见博客:
http://blog.csdn.net/u011616739/article/details/61621815
全局变量和静态变量是在程序编译期就分配到数据段或bss段中的,在整个程序的运行期,数据段和bss段中的内容是不会发生改变的。所以所有的全局变量和静态变量的生命周期必定是从程序编译到程序运行结束。而且如果全局变量和静态变量没有初始化,会统一默认初始化为0.
而局部变量是在程序的运行时,在栈中分配的内存,所以生命周期一定是从程序运行的某一个时刻开始。
猜你喜欢
转载自
www.cnblogs.com/mwl523/p/10744275.html
C语言 变量的作用域和生命周期(转)
C语言 变量的作用域和生命周期
【作用域】 C语言(各变量的生命周期)
C++的作用域、变量作用域、生命周期和变量分类介绍
C语言之变量的作用域和生命周期
c语言中变量的作用域和生命周期及其使用方法
C的变量类型、作用域与生命周期的总结
C++ 变量的作用域与生命周期
C++理论梳理5——变量的作用域和生命周期
【初识C语言】局部变量、全局变量、作用域、生命周期
【C】从内存出发理解C语言变量作用域与生命周期
C++ 生命周期和作用域
c语言中变量、函数的存储类、作用域、生命周期、连接属性间的关系
C语言中变量的作用域、生命周期及存储区域
C语言内存笔记2:变量生命周期与作用域的区别
c语言变量的作用域和周期
C语言—变量的存储方式、作用域和生存周期
嵌入式C语言之深度解读C语言的储存域,作用域,生命周期,链接属性
C语言高级篇 - 3.存储类&作用域&生命周期&链接属性
c语言的存储类&作用域&生命周期&链接属性
C语言中的生命周期,作用域,默认值,内存区域,链接属性
C语言-存储类&作用域&生命周期&链接属性
C语言存储类、作用域、生命周期、链接属性
【C语言之存储类 作用域 生命周期 链接重要知识点】
初识C语言之数据类型,生命周期&作用域
变量的生命周期和作用域
变量的作用域和生命周期
learn_C_deep_2 (作用域和生命周期、局部变量和全局变量、最宽宏大量的关键字 - auto、最快的关键字 - register)
C语言变量及其生命周期
Go语言——变量的生命周期
今日推荐
周排行
vue + echart +map中国地图,省市地图,区县地图
spring boot2 (31)-cors跨域请求
『学习资料推荐』299元买的微信营销资料打包
个人学习卷积神经网络的疑惑解答
网络工程师-软考
模拟人生4 春夏秋冬、星梦起飞版更新下载方法以及常见问题
python关于对象的字符串显示str和repr以及
奇怪的session混乱问题
【3】分治法(divide-and-conquer)
Java项目开发成绩管理系统(九) 各模块实现信息修改
每日归档
更多
2024-08-07(0)
2024-08-06(0)
2024-08-05(0)
2024-08-04(0)
2024-08-03(0)
2024-08-02(0)
2024-08-01(0)
2024-07-31(0)
2024-07-30(0)
2024-07-29(0)