C语言-变量的寿命
在所有的编程语言中变量是有寿命的,就像我们人类似的到了一定岁数就要驾鹤西去。这篇我们就讲讲变量的寿命。
说到变量的寿命(术语叫做生命周期),那么和它息息相关的就是变量的作用域了。一般来说作用域越大,活的时间越长,作用域越小,活的时间越短,但是并不绝对。那么什么是作用域呢?简单理解就像游戏中你的角色的攻击范围。
作用域有哪几种?
auto(自动的): 这是函数内部定义变量的缺省存储方式。auto变量的作用域为从定义点到该局部程序块尾部,作用域结束该类型的变量所占用的内存就会被释放。
static(静态的): 在函数外部说明为static的变量的作用域为从定义到该文件尾部;在函数内部说明为static的变量的作用域为从定义到该局部程序块尾部。该种类型的变量程序结束所占用的内存才会释放。
extern(外部的): 这是在函数外部定义的变量的缺省存储方式。extern变量的作用域是整个程序。该种类型的变量也是程序结束所占用的内存才会释放。
所以根据作用域的不同变量可以分为局部变量和全局变量。局部变量用完就会释放(静态局部变量除外),全局变量程序结束才会释放所占内存。
生命周期有哪几种?
根据作用域的不同,生命周期可以分为三种:
extern和static修饰的变量生命周期比较长,它从程序开始执行开始,到程序退出时为止。依赖整个程序的执行时间。
函数型参和auto变量的生命周期较短,函数开始它的生命开始,函数结束它的生命也就结束了。依赖于函数的执行时间。
动态分配数据的生命周期也是动态的,它从调用malloc()或calloc()为数据分配存储空间时开始,到程序调用free()或程序退出时为止。文章学习完是不是意犹未尽,还有很多地方不懂更多视频教程尽在课课家官方网站,让我们一起沉浸在知识的海洋。