【发布时间】:2011-04-30 05:31:24
【问题描述】:
我正在尝试对我通过 qSort 创建的结构进行排序,但它似乎正在按照我的预期进行。
这是我的比较功能
int compare(const void *a, const void *b) {
const INPUT *p1 = a;
const INPUT *p2 = b;
return ((p1->startTime) - (p2->startTime));
}
INPUT 是我的结构,startTime 是其中的一个 int。
我以此调用 qsort
qsort(*global,fileNumber,sizeof(global)/fileNumber,compare);
其中 global 是 INPUT 的变量名,fileNumber 是全局变量中的条目数。
从我写的 printf 语句来看,它似乎什么也没做。
我已经像这样在我的代码全局的开头初始化了
INPUT *global[4];
关于我做错了什么有什么想法吗?
谢谢
【问题讨论】:
-
fileNumber和global的定义是什么?不确定,但看起来global是一个指针,所以sizeof(global)可能不是你想要的,你可能也不想在第一个参数中取消引用它。 -
你的意思是 qsort 行中的 *global 吗?还是只是全球性的? “全局”的类型是什么?
-
将这样的差异作为比较函数的返回值几乎总是错误的。它容易受到数字溢出错误的影响。