好吧,我通过在网上四处寻找来解决这个问题,但是有人可以解释第 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);
}
最佳答案
这些行将通用 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);
不过我更喜欢第一个。
关于c - Qsort结构数组比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760475/