C语言之变量的作用域

160 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 6 天,点击查看活动详情

引言

在先前的学习中,经常见到的程序大多数是一个程序只包含一个main函数,而且该函数的变量是在函数的开头处就已经被定义好了。最重要的一点是这些变量在本函数范围内有效,即在本函数开头定义的变量,只是在本函数中可以被引用,除此以外的地方是无效的。那么接下来涉及到的程序,就比以前高级了很多,它们包含两个或多个函数,分别在各函数中定义变量。那么问题来了:在一个函数中定义的变量,在其他函数中能否被引用?在不同位置定义的变量,在什么范围内有效?

这就是变量的作用域问题。每一个变量都有一个作用域问题,即它们在什么范围内有效。这篇文章将专门讨论这个重要问题的。

一、概念

1、局部变量

  • 局部变量:在函数内部定义的变量

  • 作用域:从定义到函数结束

  • 生命周期:从定义到函数结束

2、全局变量

  • 全局变量:在函数外部定义的变量

  • 作用域:项目中所有文件 注意:在其他文件中使用需要声明

  • 生命周期:程序开始创建到程序结束销毁

3、两者关系

全局变量可以和局部变量名字相同,使用时采用就近进原则。

二、静态变量

1、静态局部变量

  • 静态局部变量:在函数内部定义的变量,使用static修饰

  • 作用域:当前函数中

  • 生命周期:程序开始创建到程序结束销毁

2、静态全局变量

  • 静态全局变量:在函数外部定义的变量,使用static修饰

  • 作用域:当前文件中

  • 生命周期:程序开始创建到程序结束销毁

3、两者关系

  • 全局变量、静态局部变量、静态全局变量如果未初始化,系统会默认初始化值为0;

  • 静态局部变量、静态全局变量只会初始化一次,允许多次计算。

三、函数

1、全局函数

  • 全局函数:没有任何修饰的函数

  • 作用域:项目中所有文件

  • 生命周期:程序开始创建到程序结束销毁

2、静态函数

  • 静态函数:使用static修饰的函数

  • 作用域:当前文件中

  • 生命周期:程序开始创建到程序结束销毁

四、结束语

这是本人在学习C语言过程中的点滴记录,希望分享出来能与大家一起进步,如有表达不足或者有错误的地方,恳请大家积极批评指正!!