默认情况下,在函数中声明的函数参数和变量的存储持续性为自动,作用域为局部,没有链接性。
当程序开始执行这些变量所属的代码块时,将为其分配内存;函数结束时,这些变量都消失,但作用域的起点是其声明位置。
#include<iostream>
using namespace std;
int main()
{
int value_a = 5;
{
int value_a = 6;
printf("value_a_2 = %d\n",value_a); //输出6
// cout << "value_a_2 = " << value_a << endl;
}
printf("value_a_1 = %d\n",value_a);
//cout << "value_a_1 = " << value_a << endl;
return 0;
}
在下面代码块中可以知道,两个同名的变量,在内部代码块中将会隐藏之前定义的变量。在离开这部分代码块后,之前定义的变量再现。
第一个变量在整个main()函数作用域内都可见,第二个变量只可以在内部代码块中可见。