我想从函数中返回两个或多个值,并希望将这些值存储到main()
函数中。我试图通过以下代码来做到这一点。
#include <stdio.h>
#include <stdlib.h>
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分。如何获得所需的输出?
答案 0 :(得分:5)
C不允许您定义返回单个类型的多个类型或多个实例的函数。但是,您可以使用struct将类似或不同类型的变量捆绑到一个新的用户定义类型中。在这种情况下,您可以执行以下操作:
#include <stdio.h>
#include <stdlib.h>
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
循环中使用它时非常方便。
答案 1 :(得分:1)
另一种可能的解决方案是期望参数的乘积和和值,如下所示:
#include <stdio.h>
#include <stdlib.h>
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;
}