1.全局变量和局部变量同名时:局部变量优先级更高,全局变量被屏蔽
#include<iostream>
using namespace std;
int age=1;
int main(){
cout<<"main中的age="<<age<<endl;
int age=3;
cout<<"main中的age="<<age<<endl;
}

2.要想在局部变量作用域中调用同名全局变量,可以使用 :: 作用域运算符。
C++规定,当缺省::左侧对象时,默认为全局变量。
#include<iostream>
using namespace std;
int age=1;
int main(){
cout<<"main中的age="<<age<<endl;
int age=3;
cout<<"main中的age="<<age<<endl;
cout<<"main中的age="<<::age<<endl;
}

3.main函数调用自己的局部变量,main函数调用的其他函数(如果没有形参)调用的是全局变量!!!!(重要)
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int age=45;
void display1(){cout<<setw(17)<<"display1中的age:"<<age<<endl;}
void display2(){cout<<setw(17)<<"display1中的age:"<<age<<endl;}
int main(){
int age=100;
cout<<setw(17)<<"main中的age:"<<age<<endl; //main调用局部变量
display1();//调用全局变量
display2(); //调用全局变量
}

4.main函数调用自己的局部变量,main函数调用的其他函数(如果有形参)调用的是局部变量!!!!(重要)
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int age=45;
void display1(){cout<<setw(17)<<"display1中的age:"<<age<<endl;}
void display2(int age){cout<<setw(17)<<"display1中的age:"<<age<<endl;}
int main(){
int age=100;
cout<<setw(17)<<"main中的age:"<<age<<endl; //main调用局部变量
display1();//调用全局变量
display2(age); //有参数 调用局部变量
}

文章介绍了C++中同名全局变量和局部变量的使用规则。当全局变量和局部变量同名时,局部变量具有更高优先级,全局变量被屏蔽。若要在局部作用域中访问全局变量,可以使用::作用域运算符。同时,文章指出main函数内的局部变量会遮蔽全局变量,而无参数的函数调用会使用全局变量,带参数的函数调用则根据形参使用局部变量。

被折叠的 条评论
为什么被折叠?



