310 字
2 分钟
--
变量的生存期和作用域
2023-10-13

变量的生存期和作用域#

基本概念#

生存期#

指的是变量从什么时候开始,从什么时候结束。

作用域#

指的是变量的生效范围,在什么区域内可以访问。

对于本地变量而言,这两者的答案是一样的——函数的大括号内。

作用域规则#

在不同的函数之间,变量的作用域不同,所以就算是相同名称的变量也不会互通。

示例说明#

比如这样:

if(a > 10)
{
int i = 10;
}
i++; // 这样会报错

i是一个没有声明的变量,这是因为int仅仅在if的块里,出了大括号之后的i就不是括号里被定义过的i,所以对i进行处理会出错。

你甚至可以直接用大括号来定义一个局部变量,像是这样:

{
int a = 100
printf("%d", a);
}

括号内的a不仅可以被赋值,也可参与printf这种函数,在括号后外面定义的a完全不影响括号内的a。但是,在块外面定义的变量,在块内依然有效,在所有块的最外面定义的变量为全局变量。

变量的生存期和作用域
https://vilstia.org/posts/学习笔记/c/变量的生存期和作用域/
作者
琴泠 - Lumina Qin
发布于
2023-10-13
许可协议
CC BY-NC-SA 4.0