C ++交换指针的函数在范围内工作

时间:2011-12-02 18:50:25

标签: c++ pointers

我有一个C ++函数来检查和交换指针数据。我的问题是,一旦变量进入函数它就可以正常工作而没有问题,但每当我从函数返回时,似乎它从未输入,因为在进入函数之前,vales仍然保存相同的信息。

以下是代码段。

bool Swap(int* pComp, int* pNew)
    {
        pComp = pNew;
        return true;
    }

非常感谢任何建议

5 个答案:

答案 0 :(得分:9)

怎么样:

#include <algorithm>

std::swap(pComp, pNew);

答案 1 :(得分:1)

首先,你的代码不交换指针:它只是将pNew的值赋给pComp。程序未按预期执行的原因是C和C ++参数按值传递。

答案 2 :(得分:1)

你在这里是Seb:

bool Swap(int*& pComp, int*& pNew)
    {
        int* t = pComp;
        pComp = pNew;
        pNew = t;
        return true;
    }

答案 3 :(得分:0)

问题是C ++是按值传递。试试这个:

bool Swap(int *&pComp, int *&pNew)
{
    int *temp = pComp;
    pComp = pNew;
    pNew = temp;
    return true;
}

C ++正在将指针的副本传递给您的Swap函数。

答案 4 :(得分:0)

您的函数不执行任何操作,因为它只影响函数范围内存在的本地指针变量。如果您尝试交换两个指针,则必须执行以下操作:

Swap(int** pComp, int** pNew){
   int* tmp;
   tmp = *pComp;
   *pComp = *pNew;
   *pNew = tmp;
}