我已经看到了有关该主题的其他两个问题,但是没有一个答案对我有用。
我的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;
}