是否可以在该函数中创建一个函数并进行多次计算,然后创建另一个函数来打印出计算结果......我知道一个函数只能返回一个值。
答案 0 :(得分:3)
一个回归值是针对懦夫!只需将函数定义为
即可struct retval { int i; double d; size_t z; } func(void);
(替换结构的内容和适用的参数)。
但是这样做时要小心。尽管我说的很重要,但总的来说不需要多次退货。
答案 1 :(得分:3)
有多种方法可以返回多个值。一种方法是将它们“打包”为结构:
typedef struct
{
int x;
float y;
} Result;
Result add2( int x1, int x2, float y1, float y2)
{
Result r;
r.x = x1 + x2;
r.y = y1 + y2;
return r;
}
另一种方法是使用参数作为输出:
void add2( int x1, int x2, float y1, float y2, int* x, float* y)
{
*x = x1 + x2;
*y = y1 + y2;
}
你也可以组合这些。
答案 2 :(得分:1)
您可以创建一个包含您感兴趣的所有内容的结构,在堆上分配它,在函数内编辑它,返回您编辑的相同结构,最后释放内存。 或者,您也可以传递指针,最后释放内存。
示例:
typedef struct date_test {
int year;
int month;
int day;
} Date;
通过这种方式,您可以创建一个包含3个int值的结构:年,月和日。
在堆上分配它并检查错误:
Date *test = malloc(sizeof(Date));
if (test == NULL) {
perror("Malloc");
exit(EXIT_FAILURE);
}
在函数内编辑它并返回结构,例如:
Date* test_f(Date* test)
{
test->year = 2017;
test->month = 05;
test->day = 29;
return test;
}
然后释放分配的内存:
free(test);