C编程,在一个函数中进行多次计算

时间:2017-05-29 19:58:35

标签: c

是否可以在该函数中创建一个函数并进行多次计算,然后创建另一个函数来打印出计算结果......我知道一个函数只能返回一个值。

3 个答案:

答案 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);