栈变量的作用域就是栈变量的可见范围。
变量的作用域主要有下面几种常见的情况:
1 for循环作用域
变量只在for循环内部可见。
int main()
{//这里i不可见
for(inti=0;i<10;++i)//for循环内部可见
{
cout<<i;//for循环内部可见
}//这里i不可见
}
上面的变量i在不可见的地方是无法访问的。变量i会在for循环右花括号执行之后立即释放。
变量i后面第一个右花括号是其生命期截止的地方。
2 函数作用域-1
变量仅仅在函数内可见。函数执行完之后不可见(被释放)。
int main(void)
{//这里i不可见
int i;//这里i开始可见
return 0;//这里i可见
}//这里i不可见
上面的 变量i后面第一个右花括号是其生命期截止的地方。在main函数执行完之后,变量i被立即释放。
3 函数作用域-2
函数执行时在函数的栈上分配空间,函数执行完之后被释放,且不可见。
下面代码中变量a,b在其所处代码遇到第一个右花括号的地方被释放。
void fun(int a)
{
int b;
}
int main()
{
fun(12);
return 0;
}
4 花括号作用域
一对花括号内部定义的变量,在这对花括号外部不可访问。
变量a后面第一个右花括号是其生命期截止的地方。