首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数内怎么返回结构体

2012-12-25 
函数内如何返回结构体?一个函数调用两个结构体做参数, 并在函数内定义一个新的结构体来存放两个结构体元素

函数内如何返回结构体?
一个函数调用两个结构体做参数, 并在函数内定义一个新的结构体来存放两个结构体元素的处理结果(这3个结构体元素类型和个数一样),如果来返回这个新结构体?

比如:


double add_rational(struct rational a, struct rational b)  // 传递两个结构
{
static struct rational m;  // 定义一个新的结构,想返回这个结构
m.x = a.x + b.x;
m.y = a.y + b.y;

printf("add_rational(a, b) ={%lf, %lf}\n", m.x, m.y);
}


因为我不知道如何返回结构体,所以在函数内处理了打印结果的功能。但如果想在main中打印处理后的新结构元素,要怎么返回这个新结构体?
[解决办法]
返回结构体推荐的做法是,直接传入结构体指针,而不是去return结构体。

引用:
一个函数调用两个结构体做参数, 并在函数内定义一个新的结构体来存放两个结构体元素的处理结果(这3个结构体元素类型和个数一样),如果来返回这个新结构体?

比如:
C/C++ code?12345678double add_rational(struct rational a, struct rational b)  // 传递两个结构{    static stru……

[解决办法]
直接用结构体作为函数参数或者返回值,效率太低了;
可以写成
void add_rational(struct rational *a, struct rational *b,struct rational *c)  // 传递两个结构
{     
    //static struct rational m;  单独看这函数貌似没必要用static
      c->x = a->x + b->x;  
     c->y = a->y + b->y;      
    //return m; 
}

[解决办法]

struct rational add_rational(struct rational a, struct rational b)
{
    struct rational m;
    m.x = a.x + b.x;
    m.y = a.y + b.y;
 
    printf("add_rational(a, b) ={%lf, %lf}\n", m.x, m.y);
    return m;
}
struct rational m = add_rational(a, b);
// 上述方法很直白,但当struct很大时可能效率有点问题。

void add_rational(struct rational a, struct rational b, struct rational * m)
{
    m->x = a.x + b.x;
    m->y = a.y + b.y;

    printf("add_rational(a, b) ={%lf, %lf}\n", m->x, m->y);
}
struct rational m;
add_rational(a, b, &m);
// 不那么直白,但当struct很大时,效率会好。

热点排行