我正在处理交换指针的函数,我找不出为什么这不起作用。当我在swap函数中输出r和s时,值会被交换,这导致我相信我正在操作一个我不明白的副本,因为我通过引用p和q来传递。C++交换指针
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
您正在操作指针的副本,而不是它们指向的数据。只是'std :: swap(p,q);'更容易。或者,如果提案实际上在未来某个时候出现,“p:=:q;”。 – chris 2013-03-28 01:46:25
@chris:Waaaat。你能链接到所述提案吗? (搜索符号很难。) – GManNickG 2013-03-28 01:48:16
@GManNickG,是的,当然。 [Here you go](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3553.pdf)。我很怀疑它使它进入。 – chris 2013-03-28 01:48:36