→ 在main的for循环中 - for(i=1;...)
→ 在被调函数的for循环中 - for(i=0;...)
在这两步中,调用的i,都是全局变量的i,也就是直接赋值了
→ 但当被调函数的for循环修改为 - for(int i=0;...)
在这一步中,是临时生成了一个变量,而不是调用的全局变量i
验证用代码
#include <iostream>
int i = 0;
int main() {
std::cout << &i << std::endl;
for (i = 0; i < 1; i++) {
std::cout << &i << std::endl;
}
for (int i = 0; i < 1; i++) {
std::cout << &i << std::endl;
}
return 0;
}
结果:
0x101b49040
0x101b49040
0x7ffeee0b8888
可以知道不同的for循环中,i的地址不一样,而第一个for循环中的i的地址跟全局变量地址一致
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…