1

我已经看到有关此主题的其他几个问题,但没有一个答案对我有用。

我的 swapClasses 方法如下:

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

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

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

4

1 回答 1

4

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

void swapClasses(struct ClassInfo *p1, struct ClassInfo *p2){
    ClassInfo temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}
于 2013-09-29T04:42:17.837 回答