struct str { char name[20]; int age[10]; }; int cmp_s_age(const void* a,const void* b) { return ((struct str*)a)->age - ((struct str*)b)->age; } int main() { struct str s[] = { {"zhangsan",30},{"wangwu",10},{"laoliu",20} }; int szs = sizeof(s) / sizeof(s[0]); qsort(s, szs, sizeof(s[0]), cmp_s_age); return 0; }纠错
时间: 2024-02-01 22:03:19 浏览: 82
这段代码本身没有语法错误,但是在 `cmp_s_age` 函数中有一个逻辑错误。应该改为:
```
int cmp_s_age(const void* a, const void* b) {
return ((struct str*)a)->age - ((struct str*)b)->age;
}
```
在 `qsort` 函数中,比较函数的参数类型必须是 `const void*`,因此需要使用强制类型转换将 `a` 和 `b` 转换为 `struct str*` 类型。然后在比较函数中,返回的应该是两个 `age` 数组的差值,而不是两个指针的差值。
阅读全文