c++作用域
在《c++prime》43页写到:
作用域(scope)是程序的一部分,在其中名字有特定的含义。c++语言中大多数作用域都用花括号分隔。
在44页最后一句话是定义在for语句里面的内容可以在for语句里面访问,但是在main的其他位置就不可以访问。
比如下面的代码:
#include<iostream>
using namespace std;
int main() {
int i=0;
int j=0;
for (i; i < 5; i++) {
int j=0
j += i;
cout << j << endl;
}
cout << j << endl;
}
最后结果为:
在for语句之外以及在for语句之内都有定义j,但是最后在外部输出的j是0而不是4,说明内外的j并不是一个j,同时还有一点也证明了这两个j不是同一个,c++不允许对一个变量初始化两次。
如果我们把for语句内部的j注释掉。
#include<iostream>
using namespace std;
int main() {
int i=0;
int j=0;
for (i; i < 5; i++) {
//int j=0
j += i;
cout << j << endl;
}
cout << j << endl;
}
结果为:
此时j对于main函数来说是一个内部的全局变量,最后输出的结果一致。