在c中返回指针的函数(int?)

时间:2017-06-14 23:25:48

标签: c

我知道我必须在函数的开头定义它应该返回什么类型,但我不知道如何用指针来做它...我尝试用int *这样做但它不工作

int *sorting(int Num_Gaag, FILE *f) {
  typedef struct {
    int x;
    int y;
    int size;
    float power;
  } gaag;
  gaag *arrgaags;
  int i = 0, j;
  int counter = 0;

  arrgaags = malloc(sizeof(gaag) * Num_Gaag);
  fseek(f, 67, SEEK_SET);
  for (i = 0; i < Num_Gaag; i++)
    fscanf_s(f, "(%d,%d)   \t%d\t%f\n", &arrgaags[i].x, &arrgaags[i].y,
             &arrgaags[i].size, &arrgaags[i].power);
  return *arrgaags;
}
谢谢你!

1 个答案:

答案 0 :(得分:2)

您需要在函数外部声明结构,然后您可以返回gaag*

typedef struct {
    int x;
    int y;
    int size;
    float power;
} gaag;

gaag *sorting(int Num_Gaag, FILE *f) {
    gaag *arrgaags;
    int i = 0, j;
    int counter = 0;

    arrgaags = malloc(sizeof(gaag) * Num_Gaag);
    fseek(f, 67, SEEK_SET);
    for (i = 0; i < Num_Gaag; i++)
        fscanf_s(f, "(%d,%d)   \t%d\t%f\n", &arrgaags[i].x, &arrgaags[i].y,
                 &arrgaags[i].size, &arrgaags[i].power);
    return arrgaags;
}

请注意,在返回指针时不要使用*,因为这只会返回指针指向的结构(数组的第一个元素)。