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;在编译的时候才没报错,
应该是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
int x=y=333;
因为这里的y是全局变量的y
#5
写代码不要这样写啊,好难理解啊,很好精力
#6
代码不要这样写.
#7
这个局部变量 y 都没定义 如何直接赋值,直接用了全局y
#8
本来想说点啥,发现他们都说了。So。啥也不说了~
#9
#10
你只重新int了x,没有重新int y
#1
额,好像发现时我搞错了,用一条语句定义多个变量时,不是这样写的,
应该是int x=333,,y=333;
因为 程序中有了,全局变量,所以我的int x=y=333;在编译的时候才没报错,
应该是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
int x=y=333;
因为这里的y是全局变量的y
#5
写代码不要这样写啊,好难理解啊,很好精力
#6
代码不要这样写.
#7
这个局部变量 y 都没定义 如何直接赋值,直接用了全局y
#8
本来想说点啥,发现他们都说了。So。啥也不说了~
#9
#10
你只重新int了x,没有重新int y