标识符的作用域
- 变量名、函数名、类型名统称为“标识符”。一个标识符能够起作用的范围,叫做该标识符的作用域
- 变量名、函数名、类型名统称为“标识符”。一个标识符能够起作用的范围,叫做该标识符的作用域
- 在单文件的程序中,结构、函数和全局变量的作用域是其定义所在的整个文件
- 函数形参的作用域是整个函数
- 局部变量的作用域,是从定义它的语句开始,到包含它的最内层的那一对大括号“{}”的右大括号 “}”为止
- for循环里定义的循环控制变量,其作用域就是整个for循环
- 同名标示符的作用域,可能一个被另一个包含。则在小的作用域里,作用域大的那个标识符被屏蔽,不起作用。
<aside>
⚠️ 避免使用同名的标识符。
</aside>
变量的生存期
- 所谓变量的“生存期”,指的是在此期间,变量占有内存空间,其占有的内存空间只能归它使用,不会被用来存放别的东西。
- 而变量的生存期终止,就意味着该变量不再占有内存空间,它原来占有的内存空间,随时可能被派做他用。
- 全局变量的生存期,从程序被装入内存开始,到整个程序结束。
- 静态局部变量的生存期,从定义它语句第一次被执行开始,到整个程序结束为止。
- 函数形参的生存期从函数执行开始,到函数返回时结束。非静态局部变量的生存期,从执行到定义它的语句开始,一旦程序执行到了它的作用域之外,其生存期即告终止。
{
for( int i = 0; i < 4;++i ) {
if( m <= 0 ) {
int k = 3;
m = m *( k ++ );
}
else {
k = 0; //编译出错,k无定义
int m = 4;
cout << m;
}
}
i = 2; //编译出错,i无定义
}