开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 6 天,点击查看活动详情。
引言
在先前的学习中,经常见到的程序大多数是一个程序只包含一个main函数,而且该函数的变量是在函数的开头处就已经被定义好了。最重要的一点是这些变量在本函数范围内有效,即在本函数开头定义的变量,只是在本函数中可以被引用,除此以外的地方是无效的。那么接下来涉及到的程序,就比以前高级了很多,它们包含两个或多个函数,分别在各函数中定义变量。那么问题来了:在一个函数中定义的变量,在其他函数中能否被引用?在不同位置定义的变量,在什么范围内有效?
这就是变量的作用域问题。每一个变量都有一个作用域问题,即它们在什么范围内有效。这篇文章将专门讨论这个重要问题的。
一、概念
1、局部变量
-
局部变量:在函数内部定义的变量
-
作用域:从定义到函数结束
-
生命周期:从定义到函数结束
2、全局变量
-
全局变量:在函数外部定义的变量
-
作用域:项目中所有文件 注意:在其他文件中使用需要声明
-
生命周期:程序开始创建到程序结束销毁
3、两者关系
全局变量可以和局部变量名字相同,使用时采用就近进原则。
二、静态变量
1、静态局部变量
-
静态局部变量:在函数内部定义的变量,使用static修饰
-
作用域:当前函数中
-
生命周期:程序开始创建到程序结束销毁
2、静态全局变量
-
静态全局变量:在函数外部定义的变量,使用static修饰
-
作用域:当前文件中
-
生命周期:程序开始创建到程序结束销毁
3、两者关系
-
全局变量、静态局部变量、静态全局变量如果未初始化,系统会默认初始化值为0;
-
静态局部变量、静态全局变量只会初始化一次,允许多次计算。
三、函数
1、全局函数
-
全局函数:没有任何修饰的函数
-
作用域:项目中所有文件
-
生命周期:程序开始创建到程序结束销毁
2、静态函数
-
静态函数:使用static修饰的函数
-
作用域:当前文件中
-
生命周期:程序开始创建到程序结束销毁
四、结束语
这是本人在学习C语言过程中的点滴记录,希望分享出来能与大家一起进步,如有表达不足或者有错误的地方,恳请大家积极批评指正!!