好吧,我通过在线观看等方式来解决这个问题,但有人可以解释一下编号为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);
}
答案 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);
我更喜欢第一个。