如何返回多个值并将它们存储在main()函数中?

我想从函数返回两个或多个值,并希望将这些值存储到main()函数中。 我试图通过以下代码来做到这一点。

 #include  #include  int main() { int num1, num2, s, p; printf("Enter tow numbers: "); scanf("%d %d", &num1, &num2); p = function(num1, num2); s = function(num1, num2); printf("Sum is: %d\nProduct is: %d", p, s); return 0; } int function(int x, int y) { int sum, product; sum = x+y; product = x*y; return product, sum; } 

如果我输入两个数字,比如5 2我希望我的结果是:

 Sum is: 7 Product is: 10 

但我两个都得到7分。 如何获得所需的输出?

C不允许您定义返回单个类型的多个类型或多个实例的函数。 但是,您可以使用结构将类似或不同类型的变量捆绑到一个新的用户定义类型中。 在这种情况下,您可以执行以下操作:

 #include  #include  typedef struct myStruct { int sum; int product; } myStruct; myStruct function(int x, int y) { myStruct val; val.sum = x+y; val.product = x*y; return val; } int main() { int num1, num2; myStruct result; printf("Enter tow numbers: "); scanf("%d %d", &num1, &num2); result = function(num1, num2); printf("Sum is: %d\nProduct is: %d", result.sum, result.product); return 0; } 

此外,虽然上面的程序在语法上是正确的,但在函数返回时,只返回逗号分隔值集合中的最后一个值。 通常情况下,不与return一起使用; 然而,当它在for循环中使用时它会非常方便。

另一种可能的解决方案是期望参数的乘积和和值,如下所示:

 #include  #include  void function(int x, int y, int *p, int *s); int main() { int num1, num2, s, p; printf("Enter tow numbers: "); scanf("%d %d", &num1, &num2); function(num1, num2, &p, &s); printf("Sum is: %d\nProduct is: %d", s, p); return 0; } void function(int x, int y, int *p, int *s) { *s = x+y; *p = x*y; }