C - 对函数内部的 Struct* 数组的副本进行排序

发布于 2024-11-30 09:15:35 字数 642 浏览 0 评论 0原文

struct numz
{
  int num;
};

typedef struct numz_ numz;

int main()
{
  int num_elements = 10;
  numz* myStruct_a = smalloc(sizeof(int)*num_elements;

  for (n = 0; n < num_elements; n++)
    myStruct_a->num[n] = n;

  funct(myStruct_a);

  return 0;
}

numz *funct(numz *myStruct_a)
{
  int num_elements = 10;
  numz* myStruct_a_cpy = smalloc(sizeof(int)*num_elements;

  for (n = 0; n < num_elements; n++)
  {
    myStruct_a_cpy->num[n] = myStruct_a->num[n];
  }

  //PSEUDO CODE
  //REARRANGE THE ELEMENTS IN myStruct_a_cpy

  return myStruct_a_cpy;
}

为什么 myStruct_a_cpy 没有重新排列?

struct numz
{
  int num;
};

typedef struct numz_ numz;

int main()
{
  int num_elements = 10;
  numz* myStruct_a = smalloc(sizeof(int)*num_elements;

  for (n = 0; n < num_elements; n++)
    myStruct_a->num[n] = n;

  funct(myStruct_a);

  return 0;
}

numz *funct(numz *myStruct_a)
{
  int num_elements = 10;
  numz* myStruct_a_cpy = smalloc(sizeof(int)*num_elements;

  for (n = 0; n < num_elements; n++)
  {
    myStruct_a_cpy->num[n] = myStruct_a->num[n];
  }

  //PSEUDO CODE
  //REARRANGE THE ELEMENTS IN myStruct_a_cpy

  return myStruct_a_cpy;
}

Why is myStruct_a_cpy not rearranged?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

牛↙奶布丁 2024-12-07 09:15:35

为什么要使用 smalloc(sizeof(int)*num_elements) 初始化 myStruct_a_cpy ?不应该是sizeof(myStruct)吗?

另外,为什么不直接使用 qsort 呢?

int 比较(const void * a, const void * b)
{
myStruct * struct_a = (myStruct*) a;
myStruct * struct_b = (myStruct*) b;
// 比较两个结构体的内容,
// 如果 a < 返回 -1 b,如果a>1,则为1 b,否则为 0。
}

myStruct *funct(myStruct *myStruct_a)

{
    int num_elements = 10;
    myStruct* myStruct_a_cpy = smalloc(sizeof(int)*num_elements);
    for (n = 0; n < num_elements; n++)
    {
        myStruct_a_cpy[n] = myStruct_a[n]
    }
    qsort(myStruct_a_cpy, 10, sizeof(myStruct), compare);
}

why are you initializing myStruct_a_cpy with smalloc(sizeof(int)*num_elements)? shouldn't it be sizeof(myStruct)?

Also, why not just use qsort?

int compare(const void * a, const void * b)
{
myStruct * struct_a = (myStruct*) a;
myStruct * struct_b = (myStruct*) b;
// compare the contents of the two structs,
// return -1 if a < b, 1 if a > b, and 0 otherwise.
}

myStruct *funct(myStruct *myStruct_a)

{
    int num_elements = 10;
    myStruct* myStruct_a_cpy = smalloc(sizeof(int)*num_elements);
    for (n = 0; n < num_elements; n++)
    {
        myStruct_a_cpy[n] = myStruct_a[n]
    }
    qsort(myStruct_a_cpy, 10, sizeof(myStruct), compare);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文