刚学C++,遇到个全局变量,局部变量,出现同名变量时,在定义方法不同时产生不同结果的问题

时间:2022-05-27 12:54:33
#include <iostream>
using namespace std;
int x=10;
int y=22;
void a();
int main()
{   
int *p,*p1;
p=&x;
p1=&y;
cout<<"全局变量x  y的地址"<<p<<"  "<<p1<<endl;
cout<<"全局变量x  y值    "<<x<<"  "<<y<<endl;
int x=y=333;
p=&x;
p1=&y;
cout<<"从新定义x  y后x y的地址"<<p<<" "<<p1<<endl;
cout<<"从新定义x  y后x y的抵  "<<x<<" "<<y<<endl;  
}

经过程序实验发现,如果在mian函数中以int x=y=产量的形式从新定义,新定义的x,y的地址只有x,是真真从新定义了的,内存地址也跟全局变量不一样,而y的地址却还是全局变量的地址,他的值会随定义时的赋值而发生给变。

感觉有点没搞懂,求高手指点迷津。
难道是因为赋值运算符的,运算顺序问题。但是至少语句的应该起到真真从新定义x,y啊。

10 个解决方案

#1


额,好像发现时我搞错了,用一条语句定义多个变量时,不是这样写的,
应该是int x=333,,y=333;
因为 程序中有了,全局变量,所以我的int x=y=333;在编译的时候才没报错,

#2


嗯,学会调试和发现错误是程序员必须具备的能力

#3



#include <iostream>
using namespace std;
int x=10;
int y=22;
void a();
int main()
{   
int *p,*p1;
p=&x; //
p1=&y; //由于你在main函数中没有定义x,y,所以,你的数据时全局x,y的地址
cout<<"全局变量x y的地址"<<p<<" "<<p1<<endl;
cout<<"全局变量x y值 "<<x<<" "<<y<<endl;
int x=y=333;
p=&x;//定义了局部数据x,y,所以局部变量会覆盖掉全局变量,如果你要使用全局数据请使用::
p1=&y;//
cout<<"从新定义x y后x y的地址"<<p<<" "<<p1<<endl;
cout<<"从新定义x y后x y的抵 "<<x<<" "<<y<<endl;   
}

#4


引用 1 楼  的回复:
额,好像发现时我搞错了,用一条语句定义多个变量时,不是这样写的,
应该是int x=333,,y=333;
因为 程序中有了,全局变量,所以我的int x=y=333;在编译的时候才没报错,

int x=y=333;
因为这里的y是全局变量的y

#5


写代码不要这样写啊,好难理解啊,很好精力

#6


代码不要这样写.

#7


这个局部变量 y 都没定义 如何直接赋值,直接用了全局y

#8


本来想说点啥,发现他们都说了。So。啥也不说了~

#9


该回复于2012-10-01 20:22:25被版主删除

#10


你只重新int了x,没有重新int y

#1


额,好像发现时我搞错了,用一条语句定义多个变量时,不是这样写的,
应该是int x=333,,y=333;
因为 程序中有了,全局变量,所以我的int x=y=333;在编译的时候才没报错,

#2


嗯,学会调试和发现错误是程序员必须具备的能力

#3



#include <iostream>
using namespace std;
int x=10;
int y=22;
void a();
int main()
{   
int *p,*p1;
p=&x; //
p1=&y; //由于你在main函数中没有定义x,y,所以,你的数据时全局x,y的地址
cout<<"全局变量x y的地址"<<p<<" "<<p1<<endl;
cout<<"全局变量x y值 "<<x<<" "<<y<<endl;
int x=y=333;
p=&x;//定义了局部数据x,y,所以局部变量会覆盖掉全局变量,如果你要使用全局数据请使用::
p1=&y;//
cout<<"从新定义x y后x y的地址"<<p<<" "<<p1<<endl;
cout<<"从新定义x y后x y的抵 "<<x<<" "<<y<<endl;   
}

#4


引用 1 楼  的回复:
额,好像发现时我搞错了,用一条语句定义多个变量时,不是这样写的,
应该是int x=333,,y=333;
因为 程序中有了,全局变量,所以我的int x=y=333;在编译的时候才没报错,

int x=y=333;
因为这里的y是全局变量的y

#5


写代码不要这样写啊,好难理解啊,很好精力

#6


代码不要这样写.

#7


这个局部变量 y 都没定义 如何直接赋值,直接用了全局y

#8


本来想说点啥,发现他们都说了。So。啥也不说了~

#9


该回复于2012-10-01 20:22:25被版主删除

#10


你只重新int了x,没有重新int y