我已经看到了有关该主题的其他两个问题,但是没有一个答案对我有用。

我的swapClasses方法如下:

void swapClasses(struct ClassInfo *p1, struct ClassInfo *p2){
    ClassInfo *temp = p1;

    *p1 = *p2;
    *p2 = *temp;
}

但是,当我执行代码并尝试添加从技术上讲应该首先出现在数组中的类时,它只会添加到末尾。即使我知道部分代码已执行(使用简单的print语句测试),也不会发生交换。我相信我使用指针的方式有问题。有人可以建议吗?

最佳答案

获取指向数组中元素的指针不会保存该元素,使其不会被另一个指向它的指针的写操作所覆盖。因此,您的交换功能是错误的。您应该的第一项复制到临时文件中,如下所示:

void swapClasses(struct ClassInfo *p1, struct ClassInfo *p2){
    ClassInfo temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}

07-24 09:17