我正在處理交換指針的函數,我找不出爲什麼這不起作用。當我在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