如何编写一个可以返回两个整数的函数?
(我能够用数组的输出解决之前的问题,一切都解决了)。
我在这里有一段代码,我想为其编写一个函数来缩短代码。但我不知道该怎么做,因为显然它需要返回两个值而我不知道该怎么做......
或者我应该将此操作分解为两个不同的功能?
或者最好以这种形式保留代码?
int a2x = 0;
int m2x = 0;
for (i = 0; i < n; i++) {
if (x[i] > 0) {
a2x = a2x + x[i];
}
if (x[i] < 0) {
m2x++;
}
}
printf("n");
printf("a2x %5d n", a2x);
printf("m2x %5d n", m2x);
int a2y = 0, m2y = 0;
for (j = 0; j < m; j++) {
if (y[j] > 0) {
a2y = a2y + y[j];
}
if (y[j] < 0) {
m2y++;
}
}
printf("a2y %5d n", a2y);
printf("m2y %5d n",m2y);
回答
您可以使用此返回类型的函数:
struct ReturnType
{
int a2y;
int m2y;
};
这种类型反映了它是一对值,而不是相同值的两个实例。即它是一个 X 和一个 M,不是两个 X 也不是两个 Ms。它的行为也像一个可复制的变量,就像返回单个 int。
- @Davide *Why would you ever create a structure of 2 int instead of using an array?* Because you can return a structure. You can't return an array.