我正在尝试使用结构使用以下代码返回多个变量。
有更好的方法吗?
这项技术怎么样,效率如何?
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;
};
答案 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)
函数是一组输入和一组允许输出之间的关系,其属性是每个输入与恰好一个输出相关。
因此,关于函数的定义,不可能从函数返回多个值。
您可以通过返回包含两个值或数组的结构来克服它,但您无法返回多个值。