【发布时间】:2014-11-30 18:03:37
【问题描述】:
编译器告诉我:
In function ‘int compare(const void*, const void*)’:
invalid conversion from ‘const int*’ to ‘int*’ [-fpermissive]
invalid conversion from ‘const int*’ to ‘int*’ [-fpermissive]
这是我的功能:
int compare(void const *a, void const *b) {
int *a2 = (int*)a;
int *b2 = (int*)b;
int *uziv1=*((const int**)a2);
int *uziv2=*((const int**)b2);
if(abs(uziv1[0]) < abs(uziv2[0])) return -1;
if(abs(uziv1[0]) > abs(uziv2[0])) return 1;
if(abs(uziv1[1]) < abs(uziv2[1])) return -1;
if(abs(uziv1[1]) > abs(uziv2[1])) return 1;
return 0;
}
我需要将两个指针从 void 转换为 int 以从它们指向的数组中读取并比较值。该函数需要具有给定的签名,以便它可以用于qsort。
【问题讨论】:
-
显示调用qsort的代码的相关部分。
-
` qsort(array, count, sizeof(int**), compare);`