关于c++变量作用域有关问题-在一个for循环体中定义的变量-外部如何用
关于c++变量作用域问题-在一个for循环体中定义的变量-外部怎么用?
会报错:
Hello.cpp:17:3: 错误: ‘z’在此作用域中尚未声明
或者是说 作用域 是怎么划分的呢? 大括号?
------解决方案--------------------
就是{ }
------解决方案--------------------
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int c = 0;
for(int i =0; i<10; i++)
{//变量z存在的世界
//变量z出生前;
int z = 0;
}//变量z存在的世界
//执行到这z和在他世界里出生东西已经不存在;
for(int i=0; i<10; i++)
{
// z 是谁?
z = 10;
printf("haha\n");
}
cout<<"Hello world\n"<<endl;
}
事实: 执行到 int z = 0;的执行编译器把标示符z加到编译器维护的散列表中,假如发生散列冲突(可能前面已经定义过全局的变量 int z = 1;),将局部的z加入到全局z的前面(链表法),所有对z的引用都是对局部z的引用,当z跳出作用域后,编译器将z从链表的头部删掉,此时对z的引用变为对全局z的引用(<程序员使用算法>);
------解决方案--------------------
水到渠成的,学习时间长了就自然了解了,慢慢学,祝你好运
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int c = 0;
for(int i =0; i<10; i++)
{
int z = 0;
}
for(int i=0; i<10; i++)
{
z = 10;
printf("haha\n");
}
cout<<"Hello world\n"<<endl;
}
会报错:
Hello.cpp:17:3: 错误: ‘z’在此作用域中尚未声明
或者是说 作用域 是怎么划分的呢? 大括号?
------解决方案--------------------
就是{ }
------解决方案--------------------
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int c = 0;
for(int i =0; i<10; i++)
{//变量z存在的世界
//变量z出生前;
int z = 0;
}//变量z存在的世界
//执行到这z和在他世界里出生东西已经不存在;
for(int i=0; i<10; i++)
{
// z 是谁?
z = 10;
printf("haha\n");
}
cout<<"Hello world\n"<<endl;
}
事实: 执行到 int z = 0;的执行编译器把标示符z加到编译器维护的散列表中,假如发生散列冲突(可能前面已经定义过全局的变量 int z = 1;),将局部的z加入到全局z的前面(链表法),所有对z的引用都是对局部z的引用,当z跳出作用域后,编译器将z从链表的头部删掉,此时对z的引用变为对全局z的引用(<程序员使用算法>);
------解决方案--------------------
水到渠成的,学习时间长了就自然了解了,慢慢学,祝你好运