Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用qsort组织结构(C)的vec_C_Vector_Struct - Fatal编程技术网

使用qsort组织结构(C)的vec

使用qsort组织结构(C)的vec,c,vector,struct,C,Vector,Struct,我正在尝试使用qsort组织一个vec。但是我在使用cmpfunc时遇到了问题。vec是结构的vec。结构非常简单,它有一个字符串和一个数字。我想按数字来组织 int cmpfunc (const void *a, const void *b) { Item i = *((Item*) a); Item j = *((Item*) b); if (i->acc < j->acc) retur

我正在尝试使用qsort组织一个vec。但是我在使用
cmpfunc
时遇到了问题。vec是结构的vec。结构非常简单,它有一个字符串和一个数字。我想按数字来组织

    int cmpfunc (const void *a, const void *b)
    {
        Item i = *((Item*) a);
        Item j = *((Item*) b);
        if (i->acc < j->acc)
            return 1;
        if (i->acc > j->acc)
            return -1;
    }
int-cmpfunc(常数无效*a,常数无效*b)
{
第i项=*((第*)a项);
第j项=*((第*)b项);
如果(i->accacc)
返回1;
如果(i->acc>j->acc)
返回-1;
}
qsort(vec、max、sizeof(项目)、cmpfunc)

我得到这个
警告:控件到达非无效函数的末尾[-Wreturn type]

}

在函数底部需要返回的if语句中只有一个返回,无论发生什么情况,函数都可以返回:

int cmpfunc (const void *a, const void *b)
{
    Item i = *((Item*) a);
    Item j = *((Item*) b);
    if (i->acc < j->acc)
        return 1;
    if (i->acc > j->acc)
        return -1;
    return 0; 
}
int-cmpfunc(常数无效*a,常数无效*b)
{
第i项=*((第*)a项);
第j项=*((第*)b项);
如果(i->accacc)
返回1;
如果(i->acc>j->acc)
返回-1;
返回0;
}
或者这也会起作用:

int cmpfunc (const void *a, const void *b)
{
    Item i = *((Item*) a);
    Item j = *((Item*) b);
    if (i->acc < j->acc)
        return 1;
    else
        return -1;
}
int-cmpfunc(常数无效*a,常数无效*b)
{
第i项=*((第*)a项);
第j项=*((第*)b项);
如果(i->accacc)
返回1;
其他的
返回-1;
}

如果在函数底部需要一个返回,则在if语句中只有一个返回,无论发生什么情况,函数都可以返回:

int cmpfunc (const void *a, const void *b)
{
    Item i = *((Item*) a);
    Item j = *((Item*) b);
    if (i->acc < j->acc)
        return 1;
    if (i->acc > j->acc)
        return -1;
    return 0; 
}
int-cmpfunc(常数无效*a,常数无效*b)
{
第i项=*((第*)a项);
第j项=*((第*)b项);
如果(i->accacc)
返回1;
如果(i->acc>j->acc)
返回-1;
返回0;
}
或者这也会起作用:

int cmpfunc (const void *a, const void *b)
{
    Item i = *((Item*) a);
    Item j = *((Item*) b);
    if (i->acc < j->acc)
        return 1;
    else
        return -1;
}
int-cmpfunc(常数无效*a,常数无效*b)
{
第i项=*((第*)a项);
第j项=*((第*)b项);
如果(i->accacc)
返回1;
其他的
返回-1;
}

注意,后者可能触发整数下溢。通常我会这样做:
return(j->accacc)-1:i->accacc,它将覆盖较小、较大和相等的所有三种情况,分别返回-1、1和0。请注意,后者可能触发整数下溢。通常我会这样做:
return(j->accacc)-1:i->accacc
,它将覆盖较小、较大和相等的所有三种情况,分别返回-1、1和0。关于警告,如果测试值相等,您认为您的函数会返回什么?因此,这些
return
语句都不会触发?关于您的警告,如果测试值相等,并且这些
return
语句都不触发,您认为函数返回什么?