【问题标题】:C - Sorting a Copy of a Struct* Array Inside of a function [closed]C - 在函数内部对 Struct* 数组的副本进行排序[关闭]
【发布时间】:2011-08-16 16:24:04
【问题描述】:
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没有重新排列?

【问题讨论】:

  • 我看不到你在哪里重新排列元素。我只看到你应该看到的评论标记。
  • 因为你注释掉了重新排列它的代码?是什么让您认为它没有在您的真实代码中重新排列,因为您从未将其打印出来或以其他方式测试myStruct_a_cpy 是否与myStruct_a 不同?显示一些实际存在问题的代码。
  • 该代码充满了错误,在最好的情况下无法编译。
  • 您需要提供更多代码,并更正您提供的代码中的错误。缺少分号和括号。
  • 这几乎不可能是你真正的代码,因为它充满了错误并且无法编译,而且显然不工作的代码被注释掉了,所以无法判断什么是错误的.发布你的真实代码。

标签: c arrays struct malloc


【解决方案1】:

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

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

int compare(const void * a, const void * b) { myStruct * struct_a = (myStruct*) a; myStruct * struct_b = (myStruct*) b; // 比较两个结构的内容, // 如果 a b 返回 1,否则返回 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多