使用c函数返回多个变量

时间:2016-11-14 09:42:29

标签: c function return

我正在尝试使用结构使用以下代码返回多个变量。

有更好的方法吗?

这项技术怎么样,效率如何?

PS:我是嵌入式系统的新手,所以试图发现内存,性能和约束的最佳技术。

#include <stdio.h>
struct two func(int , int );

struct two {
    int x;
    int y;

};

int main()  {
    printf("values is\n %i\n %i\n ",func(33,44).x,func(33,44).y);
    return 0;
}


struct two func(int x, int y ) {

    struct two ex;
    ex.x=x;
    ex.y=y;

    return ex;
};

3 个答案:

答案 0 :(得分:1)

使用指针

void Func(int * return1,int * return2)

致电时: int x,y; Func(&amp; x,&amp; y);

它也是一个通用标准,只使用错误代码的函数返回值,并且只通过指针返回值。

答案 1 :(得分:1)

这是一项很好的技术,而且效率不高。 (但也有其他选择;在Sean K的答案中提到了一个。另见http://c-faq.com/misc/multretval.html。)

效率低下 - 如果函数有副作用,可能是错误的 - 是调用它两次以获得它的两个值。我使用

struct two r = func(33, 44);
printf("values are %i %i\n", r.x, r.y);

答案 2 :(得分:0)

  

函数是一组输入和一组允许输出之间的关系,其属性是每个输入与恰好一个输出相关。

- Wikipedia

因此,关于函数的定义,不可能从函数返回多个值。

您可以通过返回包含两个值或数组的结构来克服它,但您无法返回多个值。