变量的作用域与生命周期
2022/1/4 23:15:49
本文主要是介绍变量的作用域与生命周期,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
变量的作用域与生命周期
-
局部变量
-
普通
仅在作用域有效,每次调用包含该局部变量的函数时,该变量会被重新初始化。
例如:
void func() { int a = 1; ++a; printf("a = %d\n",a); } int main() { func(); func(); }
两次调用
func()
后a
的值都为2,生命周期随函数的结束而结束。 -
静态
staic
仅在作用域有效,每次调用包含该局部变量的函数时,该变量不会被重新初始化,而是接着上一次的值运行下去。
例如:
void func() { static int a = 1; ++a; printf("a = %d\n",a); } int main() { func(); func(); }
第一次调用
func()
后a
的值为2,第二次调用后为3,生命周期随程序的结束而结束。
注:局部变量不赋初值其值为随机值
-
-
全局变量
-
普通
作用域跨文件,不会被重新初始化,在上次值得基础上改变值。
跨文件使用时需用
extern
声明。例如:
a.c
int a = 1;
main.c
extern int a; int main() { a++; printf("a = %d\n",a); return 0; }
a 的最终值为2;
-
静态
static
作用域限定在其所在的文件内。
例如:
a.c
static int a = 1;
main.c
extern int a; int main() { a++; printf("a = %d\n",a); return 0; } //err
报错:a 未定义,发生链接错误。因为静态全局变量无法跨文件使用。
注:局部变量不赋初值其值为 0
-
这篇关于变量的作用域与生命周期的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?