| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1190 人关注过本帖
标题:返回值问题~!
只看楼主 加入收藏
vic_space
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-5-24
收藏
 问题点数:0 回复次数:11 
返回值问题~!
如果我的一个被调用函数里需要返回2个值,那该怎样做啊?(我知道函数只能返回一个值~!)
不过我采用全局变量,勉强能解决这个问题........但不知道还有没有更好的办法呢?~!
搜索更多相关主题的帖子: 返回值 变量 全局 函数 办法 
2006-06-24 10:17
cxl11641
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-6-24
收藏
得分:0 

只有能一个返回值,如果需要在被调函数和主调函数之间有更多的交流,可以借助全局变量,指针完成。

2006-06-24 10:26
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用vic_space在2006-6-24 10:17:39的发言:
如果我的一个被调用函数里需要返回2个值,那该怎样做啊?(我知道函数只能返回一个值~!)
不过我采用全局变量,勉强能解决这个问题........但不知道还有没有更好的办法呢?~!

用结构体解决问题呗。for example:
struct complex
{
double re; /*real part*/
double im; /*imag part*/
};

struct complex fun(............)
{
struct complex ans;
//........................
return ans;
}

[此贴子已经被作者于2006-6-24 10:56:16编辑过]


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-24 10:55
vic_space
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-5-24
收藏
得分:0 

哦~!谢了~!完全明白~!

2006-06-24 12:58
仁者无敌
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用–★–在2006-6-24 10:55:57的发言:

用结构体解决问题呗。for example:
struct complex
{
double re; /*real part*/
double im; /*imag part*/
};

struct complex fun(............)
{
struct complex ans;
//........................
return ans;
}


这主意不错!


I am a programmer !
2006-06-24 16:07
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
在定义参数的时候用指针也可以,如果狂用结构体的话会造成结构体泛滥而且不灵活.

不过呢~其实还有种返回结构体的方法

以这个为例:

struct complex
{
double re; /*real part*/
double im; /*imag part*/
};

struct complex fun(............)
{
struct complex ans;
//........................
return ans;
}

这个是星星写的.调用的时候是这样调用
struct complex complex_number = fun(....);
这样写只能返回一种结构体.如果想实现函数的返回值重构,那么可以这样规范你的函数定义

void * fun(............)
{
struct complex ans;
//........................
return ans;
}

这样调用的时候
struct complex complex_number = (strutct complex)fun(....);
如果你重构了函数fun是返回一个字符串,这个时候就可以
char * string_number = (char*)fun(....);

那我怎么知道到底是返回char*还是struct complex呢?这个就需要在参数中进行声明
struct complex complex_number = (strutct complex)fun( argType );
char * string_number = (char*)fun( argType );

当然,如果要完全实现一个函数的重构就必须定义一个变参数的函数了
void * fun( int argCount, ... )
{
struct complex ans;
//........................
return ans;
}


呵呵,以上是我胡言乱语,请勿较真

淘宝杜琨
2006-06-24 16:07
yjbqq
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-10-10
收藏
得分:0 
fac(int n)
{int t;
if(n==1)||(n==0) return 1;
else
{ t=n*fac(n-1);
return t; 请问这里的两个return分别是这样返回啊?
}
}
main( )
{int m,y;
printf(“Enter m:”);
scanf(“%d”,&m);
if(m<0) printf(“Input data Error!\n”);
else
{y=fac(m);
printf(“\n%d! =%d \n”,m,y);
}
}

抵制日货,从我做起!!!
2006-11-22 21:00
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用yjbqq在2006-11-22 21:00:33的发言:
fac(int n)
{int t;
if(n==1)||(n==0) return 1;
else
{ t=n*fac(n-1);
return t; 请问这里的两个return分别是这样返回啊?
}
}
main( )
{int m,y;
printf(“Enter m:”);
scanf(“%d”,&m);
if(m<0) printf(“Input data Error!\n”);
else
{y=fac(m);
printf(“\n%d! =%d \n”,m,y);
}
}

两个return只能执行一个.


倚天照海花无数,流水高山心自知。
2006-11-22 21:03
yjbqq
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-10-10
收藏
得分:0 
以下是引用yjbqq在2006-11-22 21:00:33的发言:
fac(int n)
{int t;
if(n==1)||(n==0) return 1; 我的意思是return 1中的1是返回到哪里啊?
else
{ t=n*fac(n-1);
return t; }
}
main( )
{int m,y;
printf(“Enter m:”);
scanf(“%d”,&m);
if(m<0) printf(“Input data Error!\n”);
else
{y=fac(m);
printf(“\n%d! =%d \n”,m,y);
}
}


抵制日货,从我做起!!!
2006-11-22 21:11
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

你试着模拟一下f(2)的过程.就知道1返回给谁了.
int f(3)
{
3!=1;
return 3*f(2);
}
int f(2)
{
2!=1;
return 2*f(1);
}
int f(1)
{
1==1;
return(1);
}

应该可以发现1是被f(1)接收了,f(1)被f(2)接收...


倚天照海花无数,流水高山心自知。
2006-11-22 21:18
快速回复:返回值问题~!
数据加载中...
 
   



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

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