我正在使用这个结构
struct box
{
int h,w,d;
};
int compare (const void *a, const void * b)
{
return ((*(box *)b).d * (*(box *)b).w) – ((*(box *)a).d * (*(box *)a).w); // error is showing in this line
}
box rot[3*n];
qsort (rot, n, sizeof(rot[0]), compare);
我正在尝试qsort 但显示错误表达式不能用作
中的函数答案 0 :(得分:0)
返回行中的减号运算符存在问题,应该是-
而不是–
定义数组rot
时应该包含 struct box
类型的元素而不是box
的另一个问题,因为否结构块中的typedef
因此,除了为结构box
添加标记box
之外,您还有两种可能性:
typedef struct box
{
int h,w,d;
} box;
或者只是在数组struct
的定义中添加单词rot
,并在比较函数中添加(在每个box
单词之前):
int compare (const void *a, const void * b)
{
return ((*(struct box *)b).d * (*(struct box *)b).w) - ((*(struct box *)a).d * (*(struct box *)a).w);
}
和
struct box rot[3*n];