C语言结构体比较大小函数
时间: 2023-10-18 11:11:42 浏览: 96
C语言结构体比较大小可以通过自定义比较函数来实现。下面是一个示例代码:
```c
typedef struct {
int age;
char name[20];
} Person;
int cmp_person(const void* a, const void* b) {
const Person* p1 = (const Person*)a;
const Person* p2 = (const Person*)b;
if (p1->age < p2->age) {
return -1;
} else if (p1->age > p2->age) {
return 1;
}
return strcmp(p1->name, p2->name);
}
int main() {
Person p1 = {20, "Tom"};
Person p2 = {25, "Jerry"};
int cmp_res = cmp_person(&p1, &p2);
if (cmp_res < 0) {
printf("p1 is smaller than p2\n");
} else if (cmp_res > 0) {
printf("p1 is larger than p2\n");
} else {
printf("p1 is equal to p2\n");
}
return 0;
}
```
在上面的代码中,`Person` 结构体包含一个 `age` 和一个 `name`。我们定义了一个 `cmp_person` 函数来比较两个 `Person` 结构体的大小。该函数首先比较 `age`,如果 `age` 相等,则比较 `name`。最后,我们使用 `qsort` 函数来对结构体数组进行排序,该函数使用自定义的 `cmp_person` 函数来比较结构体的大小。
阅读全文