您不能轻易返回多个变量,例如带有return (a,b,c)
. 但是,您可以传递设置为其他“返回值”的指针或使用结构。
空间不足
如果您希望函数实际返回单独的值而不修改其参数,一种简单的方法是传递额外的指针(您也可以使用结构)。例如,此函数将计算一对数字的和和差:
int add_sub(int a, int b, int* ret2) {
if (ret2) *ret2 = a - b;
return a + b;
}
if (ret1)
允许您安全地作为指针参数传递,NULL
以便您可以忽略该返回值。你像这样使用它:
int add, sub;
add = add_sub(10, 3, &sub);
// add == 13, sub == 7
int just_add;
just_add = add_sub(15, 5, NULL);
// just_add == 20
(注意,如果你两次传递相同的参数,这种技术可能会导致令人困惑的行为,例如a = add_sub(a, b, &b)
不给你想要的东西。)
到位
如果你想修改函数的参数,你可以将它们作为指针传递。例如,这个函数将增加它的两个参数,然后返回它们的总和:
int increment_and_sum(int* a, int* b) {
(*a)++;
(*b)++;
return a + b
}
您使用的是:
int a = 10, b = 3, sum;
sum = increment_and_sum(&a, &b);
// a == 11, b == 4, sum == 15
(请注意,您不能在 中使用文字increment_and_sum
,也就是说,您不能使用increment_and_sum(3, 4)
or increment_and_sum(&3, &4)
。)