C -“使用结构指针时出错”

92vpleto  于 2023-01-16  发布在  其他
关注(0)|答案(1)|浏览(139)

我有一个函数,我向它发送数组结构的元素,但是,由于某种原因,总是出现错误

typedef struct student{
    char *fullName;
    char groupNumber[8];
    float GPA;
}student;
int cmpName(student* p1, student* p2){
    printf("%s\n",p1->fullName);
    return (strcmp(p1->fullName,p2->fullName));
}

void gnomeSort(student **mass,int size,int (*cmpFunc)(student *p1, student *p2)){
        int index = 0;
        while (index < size){
            if (index == 0)
                index++;
            if (cmpFunc(mass[index],mass[index-1]))
                index++;
            else{
                student *tmp;
                tmp = mass[index-1];
                mass[index-1] = mass[index];
                mass[index] = tmp;
                index--;
            }

        }
}

我知道问题很可能出在指针上,但我不知道如何解决它

fjnneemd

fjnneemd1#

尽量不要在参数中使用函数

void gnomeSort(student **mass,int size,int (*cmpFunc)(student *p1, student *p2))

int (*cmpFunc)(student *p1, student *p2)替换为int param并独立执行函数cmpName(),然后调用gnomeSort()

相关问题