你如何在c中交换结构数组的元素?

时间:2013-09-29 04:33:06

标签: c++ c arrays struct swap

我已经看到了关于这个话题的其他几个问题,但没有一个答案对我有用。

我的swapClasses方法如下:

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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