Sunset
310 字
2 分钟
变量的生存期和作用域
变量的生存期和作用域
基本概念
生存期
指的是变量从什么时候开始,从什么时候结束。
作用域
指的是变量的生效范围,在什么区域内可以访问。
对于本地变量而言,这两者的答案是一样的——函数的大括号内。
作用域规则
在不同的函数之间,变量的作用域不同,所以就算是相同名称的变量也不会互通。
示例说明
比如这样:
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/变量的生存期和作用域/