我目前正在使用Python进行长时间的咒语后回到C.我想知道是否有办法在C中返回多个变量的信息。我能想到的最好的方法是返回一个包含变量的结构。这是最好的方式吗?
答案 0 :(得分:4)
C不支持允许您执行此操作的元组或类似功能。所以,答案很遗憾没有。
正如你所说,你可以得到的最接近的是定义你自己的自定义struct
,然后可以用它来存储你想要返回的值。
答案 1 :(得分:2)
当多个变量以某种显而易见的方式相互关联时,例如描述坐标的两个变量(x, y)
,(firstName, lastName, address)
联系人定义等等,返回struct
的解决方案是一个很好的逻辑选择。
在必须返回多个彼此无关的变量的情况下,更好的方法是为结果传递指针,或选择一个值作为“主要答案”并传递其他值的指针。
标准库中的 strtol
函数是“混合”方法的一个示例:返回解析后的值,将结束指针设置为传递给它的pointe-to-pointer。
答案 2 :(得分:2)
您可以使用指针作为参数间接执行此操作。 myDivide
间接返回除法和模数的结果。
#include <stdio.h>
#include <stdlib.h>
void myDivide(int x, int y, int* div, int* mod);
int main(void) {
int x = 100;
int y = 42;
int div, mod;
myDivide(x, y, &div, &mod);
printf("%d / %d = %d\n", x, y, div);
printf("%d %% %d = %d\n", x, y, mod);
return (0);
}
void myDivide(int x, int y, int* div, int* mod) {
*div = x/y;
*mod = x%y;
}