Qsort结构数组比较函数

时间:2012-05-25 19:42:12

标签: c struct qsort

好吧,我通过在线观看等方式来解决这个问题,但有人可以解释一下编号为1和2的行是什么以及为什么需要它们

int structCompare(const void *a, const void *b)
{
     struct trade *tempA = (struct trade *)a;//(1)
     struct trade *tempB = (struct trade *)b;//(2)
     return strcmp(tempA->name, tempB->name);
}

1 个答案:

答案 0 :(得分:3)

这些行将通用void指针投射到struct trade指针。当涉及void *时,显式演员在C中是多余的,应该被删除:

 struct trade *tempA = a;
 struct trade *tempB = b;
 return strcmp(tempA->name, tempB->name);

你可以写:

return strcmp(((struct trade *)a)->name, ((struct trade *)b)->name);

我更喜欢第一个。