| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 452 人关注过本帖
标题:[求助]这个程序为什么出错(?)
只看楼主 加入收藏
wimphy
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2005-12-1
收藏
 问题点数:0 回复次数:4 
[求助]这个程序为什么出错(?)

#include<iostream>
#include<string>
using namespace std;

int foobar(int *pi=0)
{
int a=10;
*pi=a;
return *pi;
}

int main()
{
int *pi2=0;
int ival=foobar(pi2);

cout<<ival;

return 0;
}

2006-04-13 16:22
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

#include<iostream>
#include<string>
using namespace std;

int foobar(int *pi)
{
int a=10;
pi=&a;
return *pi;
}

int main()
{
int *pi2=0;
int ival=foobar(pi2);

cout<<ival;
system("pause");
return 0;
}


2006-04-13 16:44
wimphy
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2005-12-1
收藏
得分:0 
*pi=a
不是把a的值付给p所指向的值么?

pi=&a
是把a的地址值付给pi,那么假如引用呢?该怎么声明?
int c=0;
int d = &c;
这样么?好像一样啊
2006-04-13 16:57
skyfire
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include<iostream>
#include<string>
using namespace std;

int foobar(int &pi)
{

int a=4;
pi=a;
return pi;
}

int main()
{
int pi2;
int ival=foobar(pi2);

cout<<ival<<endl;

return 0;
}


广结天下好友,共同努力进步!
2006-04-14 11:38
Magicmoon20
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-4-2
收藏
得分:0 


2楼的老兄的疑问我也许可以回答
一般情况下两种情况是等效的但是在这个程序中就不可以因为
在主程序中的 int *pi2=0;并没有给pi2分配内存地址所以 在 int foobar(int *pi)函数中 *pi=a只是把a的值给pi pi仍没有被分配内存所以在执行的时候会出现错误 而pi=&a;相当于是为pi分配内存
如果你一定要用 *pi=a这一句的话那么你要把
int *pi2=0;改为int*pi2=new int; *pi2=0;
这样就可以拉







2006-04-24 13:21
快速回复:[求助]这个程序为什么出错(?)
数据加载中...
 
   



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

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