我有一个C ++函数来检查和交换指针数据。我的问题是,一旦变量进入函数它就可以正常工作而没有问题,但每当我从函数返回时,似乎它从未输入,因为在进入函数之前,vales仍然保存相同的信息。
以下是代码段。
bool Swap(int* pComp, int* pNew)
{
pComp = pNew;
return true;
}
非常感谢任何建议
答案 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;
}