struct r() {
return 1, "hello";
}
int main() {
int x;
char y[100];
x, y = r(); // set x to int 1, and set y to "hello"
}
反正我能做到吗?我相信这在C
中是可能的答案 0 :(得分:3)
是的,您可以使用结构执行此操作,结构可能包含任意数据字段,如以下完整程序:
#include <stdio.h>
struct tPair {int one; int two;};
struct tPair returnPair(void) {
struct tPair plugh;
plugh.one = 7;
plugh.two = 42;
return plugh;
}
int main(void) {
struct tPair xyzzy = returnPair();
printf("Pair is %d, %d\n", xyzzy.one, xyzzy.two);
return 0;
}
如果你编译并运行它,你会看到:
Pair is 7, 42
答案 1 :(得分:2)
函数不能返回多个值。
但是,您可以传递指针,以便函数通过数据写入数据 指针:
void foo(int *x, int *y)
{
*x = 1;
*y = 2;
}
void bar(void)
{
int a, b;
foo(&a, &b);
printf("a: %d, b: %d\n", a, b); // prints a: 1, b: 2
}
另一种选择是创建一个结构并返回该结构:
struct answer {
int x;
int y;
};
struct answer foo(void)
{
struct answer a;
a.x = 1;
a.y = -4;
return a;
}
void bar(void)
{
struct answer p = foo();
printf("p.x: %d, p.y: %d\n", p.x, p.y);
}
答案 2 :(得分:2)
你必须使用struct,同时我建议你买一本书
#include <stdio.h>
struct Return_Value {
int x;
char *y;
};
typedef struct Return_Value Return_Value_t;
Return_Value_t r() {
Return_Value_t revals = { .x = 1, .y = "hello" };
return revals;
}
int main() {
int x;
char y[100];
Return_Value_t reval = r();
printf("%d\n", reval.x);
printf("%s\n", reval.y);
}