24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1184  |  回复: 5

zhuwei04

木虫 (正式写手)

[求助] [求助]C/C++中多个返回值的问题

C++中的函数是否能设定多个输出值

例如:
有一个函数fun(a,b,c,d,e),a、b、c、d、e是输入参数,通过函数计算得到f1=a+b;f2=a+c+d+e,要返回f1和f2的值应该怎么实现?

谢谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hxz

木虫 (正式写手)

【答案】应助回帖


xzhdty(金币+1): 谢谢你的应助 2011-04-30 09:12:53
zhuwei04(金币+5): 嗯,谢谢指教 2011-04-30 10:02:51
c++不能返回多个值
如果需要返回多个值, 一般有两种替代做法:
1. 利用函数的副作用, 返回值在函数外定义, 在函数内修改, 一般为void函数
2. 把返回值打包返回, 如把返回值打包成一个结构返回

ps, 如果想要真正的多值返回, 请用lisp
2楼2011-04-30 09:02:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★
微尘、梦想(金币+2): 谢谢参与应助! 2011-04-30 19:09:19
一般做法就是传入指针,在函数中修改返回值
CODE:
void foo(int *f1, int *f2, int a, int b, int c, int d, int e)
{
    f1=a+b;
    f2=a+c+d+e;
}

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
3楼2011-04-30 14:54:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

来自天狼

木虫 (正式写手)

★ ★
微尘、梦想(金币+2): 谢谢回帖交流! 2011-04-30 19:09:41
引用回帖:
Originally posted by libralibra at 2011-04-30 14:54:31:
一般做法就是传入指针,在函数中修改返回值
CODE:
void foo(int *f1, int *f2, int a, int b, int c, int d, int e)
{
    f1=a+b;
    f2=a+c+d+e;
}


楼上的,错了,应该是
void foo(int *f1, int *f2, int a, int b, int c, int d, int e)
{
    *f1=a+b;
    *f2=a+c+d+e;
}
也可以用引用
void foo(int &f1, int &f2, int a, int b, int c, int d, int e)
{
    f1=a+b;
    f2=a+c+d+e;
}
4楼2011-04-30 16:29:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

引用回帖:
Originally posted by 来自天狼 at 2011-04-30 16:29:24:
楼上的,错了,应该是
void foo(int *f1, int *f2, int a, int b, int c, int d, int e)
{
    *f1=a+b;
    *f2=a+c+d+e;
}
也可以用引用
void foo(int &f1, int &f2, int a, int b, int c, i ...

恩呢,手误了,^_^,应该是*f1和*f2
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
5楼2011-04-30 17:49:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

【答案】应助回帖

★ ★
微尘、梦想(金币+2): 谢谢回复! 2011-05-01 18:21:24
标准的C++做法是pair:
CODE:
#include
std::pair func(int a, int b, int c, int d, int e){
     return std::pair(a+b, a+c+d+e);
}

避免性能损失当然采用指针和引用,但是也不是说不存在抵消性能的办法,Qt的隐式共享就可以达到这样的可读性且没有性能损失。
漩涡的中心有一块空地,空空的。
6楼2011-05-01 10:25:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhuwei04 的主题更新
信息提示
请填处理意见