qsort使用中的指针有关问题
qsort使用中的指针问题C/C++ code#include iostream#include fstream#include string.h#include st
qsort使用中的指针问题
C/C++ code#include <iostream>#include <fstream>#include <string.h>#include <stdlib.h>using namespace std;struct Doubleint{ int start,end;};int cmp(const void* a,const void* b){ Doubleint *c = (Doubleint*)a; Doubleint *d = (Doubleint*)b; if (d->start < 1000) { return -1; } else return 0;}int main() { ofstream fout ("milk2.out"); ifstream fin ("milk2.in"); int n,i = 0,l,h,max,min,c; Doubleint ary[3],tmp; fin >> n; while(n--){ fin >> ary[i].start; fin >> ary[i].end; i++; } l = ary[0].start; h = ary[0].end; qsort(&ary[0],n,sizeof(Doubleint),cmp); return 0;}
cmp函数中 b指针总是错误,我查看了一下他的地址没有错误这个事怎么回事?
milk2.in内容为:
3
300 1000
700 1200
1500 2100
[解决办法]你的数组ary只有3个元素那么大,因此n只要大于3的话,访问就会越界。
[解决办法]你的qsort没有用~没有快排的效果,请贴上你的完整代码,和要实现的功能~
[解决办法]Doubleint *c = (Doubleint*)a;
Doubleint *d = (Doubleint*)b;
你需要改为:
Doubleint *c = (Doubleint*)*a;
Doubleint *d = (Doubleint*)*b;
你试试。
[解决办法]你的CMP函数写成那样到底想要按什么方式排序呢???
[解决办法][解决办法] if (d->start < 1000)
{
return -1;
}
else
return 0;
就一个d和1000比?c呢?
[解决办法][解决办法]我在xcode下测试没有任何错误啊,楼主不知道出现什么情况了
[解决办法]