这是我的问题: 让我们说我有一个结构:
enum color{Black, Red, White};
struct car
{ int weight;
int price;
enum color my_color;
};
我已经初始化了10个元素数组:
struct car cars[10];
for (int i = 0; i < 10; i++)
{
cars[i].weight = (rand() % 1000); // do not mind the number values
cars[i].price= (rand() % 1000);
cars[i].my_color= (rand() % 2);
}
现在我的工作是编写一个返回有序数组的函数,并且传递的参数应该是结构成员(权重,价格,颜色)。我知道有很多排序算法,但我不知道如何只使用其中一个成员对它进行排序。这个排序功能怎么样?
答案 0 :(得分:1)
在C语言中,没有办法在语法上访问struct成员,以便对它们进行一些通用的比较。话虽这么说,通常的方法是调用引入here的qsort
库函数来执行排序。它被设计为将函数指针作为一个agrument;这将用于实现和提供实际比较的功能。
要解决问题中的任务,有必要为car
类型的每个成员实现比较功能。