0

好的,我通过在网上四处查看来完成这项工作,但是有人可以解释一下编号为 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);
}
4

1 回答 1

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);

不过我更喜欢第一个。

于 2012-05-25T19:44:08.887 回答