标题:[求助] 菜鸟问题
只看楼主
独孤浪子
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-3-27
 问题点数:0 回复次数:5 
[求助] 菜鸟问题

#include<iostream>
using namespace std;
int main()
{
void sss(int *&P,int *&Q);
int c,d;
c=2;
d=6;
int *p,*q;
p=&c;
q=&d;
sss(p,q);
cout<<"p指向的值为:"<<*p<<endl;
cout<<"q指向的值为:"<<*q<<endl;
system("pause");

return 0;
}
void sss(int *&P,int *&Q)
{
int x,y;
x=1000;
y=2000;
P=&x;
Q=&y;
}


输出:p指向的值为:1000
q指向的值为:0



为什么呀, q怎么不是2000呀?????????~~~~~~~~~~~~~

搜索更多相关主题的帖子: include system return 
2007-03-31 12:04
wode2008
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-4-3
得分:0 

你可以按下面的修改;
cout<<"p指向的值为:"<<*p<<endl<<"q指向的值为:"<<*q<<endl;


2007-04-11 21:32
loojay
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-3-20
得分:0 

在sss内定义的x,y的空间当函数调用完后就释放了。.

2007-04-12 19:14
tgnian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-4-13
得分:0 
为什么只修改输出,结果就不一样
这两种输出有什么不同

3楼说在sss内定义的x,y的空间当函数调用完后就释放了。.
那为什么p的值是1000


2007-04-13 19:05
tgnian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-4-13
得分:0 
在执行完sss函数后,p,q指向sss的局部变量,在你下一次执行函数时,该堆栈将被破坏,p,q将指向乱码。而编译器出于优化的原因,将cout<<....<<...的变量保存到寄存器中,所以写在同一行cout<<..<<*p<<..*q时,*p,*q的值会在执行函数之前保存下来,故可以看到1000,2000。你还可以这样试试:
cout << "hha";//已经破坏堆栈了
cout << *p << endl;//乱码

2007-04-17 23:34
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
得分:0 
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />

2007-04-18 22:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-128309-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.324339 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved