我正在研究一个交换指针的函数,但我不知道为什么这不起作用。当我在交换函数中打印出 r 和 s 时,值被交换,这让我相信我正在操作一个我不理解的副本,因为我通过引用 p 和 q 传递。
void swap(int *r, int *s)
{
int *pSwap = r;
r = s;
s = pSwap;
return;
}
int main()
{
int p = 7;
int q = 9;
swap(&p, &q);
cout << "p = " << p << "q= " << q << endl;
return 0;
}
打印:p = 7q = 9
原文由 M K 发布,翻译遵循 CC BY-SA 4.0 许可协议
在您的
swap
函数中,您只是在更改指针的方向,即更改指针指向的对象(这里,具体是对象的地址p
和q
)。指针指向的对象根本没有改变。您可以直接使用
std::swap
。或者像下面这样编写你的交换函数: