从函数返回两个值?

时间:2011-06-13 16:15:48

标签: c

  

可能重复:
  returning multiple values from a function

我有这个练习,它说我必须制作一个能够以适当的诱惑读取球撞击地面的高度和数量的功能。

函数如何返回两个值?它不会只返回一个吗?它将返回什么?

float insert(int h,int n)
{
   printf ("Give a value for height and number of hits");
   scanf ("%d %d",&h,&n);
   return
}

3 个答案:

答案 0 :(得分:1)

顺便说一句,你给出的函数不会返回任何错误。

一个函数只能有一个返回值。如果您想要返回多个值,您可以:

  1. 返回包含值的结构。
  2. 使用指针将返回值作为参数传递。
  3. 选项2的一个例子:

    void divmod(int a, int b, int *div, int *mod)
    {
        *div = a/b;
        *mod = a%b;
    }
    

    像这样调用函数:

    int div;
    int mod;
    divmod(666, 42, &div, &mod);
    

    我故意选择了另一个例子,因为我无法弄清楚你想要对float返回值做什么。

答案 1 :(得分:0)

您可以返回封装两个值的struct,也可以使用函数存储值的两个指针参数。

typedef struct
{
    double height;
    int hits;
} BallParameters;


BallParameters insert()
{
    BallParameters ret;
    printf ("Give a value for height and number of hits");
    scanf ("%f %d",&ret.height,&ret.hits);
    return ret;
}

/* ~~~ or ~~~ */

void insert(double *height, int *hits)
{
    printf ("Give a value for height and number of hits");
    scanf ("%f %d",height,hits);
}

答案 2 :(得分:0)

对于家庭作业,他们可能会很高兴你传递参数来填写。

void insert(int* h, int* n)
{
   ...
   scanf("%d %d", h, n);
}

// called like:
// int height, number;
// insert(&height, &number);

但是你总是会变得棘手并返回一个结构

typedef struct
{
  int h;
  int n;
} S;

S insert()
{
  S s;
  ...
  scanf ("%d %d" , &s.h, &s.n);
  return s;
}