我正在尝试编写一个将两个指针作为参数的函数,然后使第一个指针指向第二个指针指向的对象,第二个指针指向第一个指针指向的对象。
void swap(int *x, int *y)
{
int *s;
s = x;
x = y;
y = s;
}
Run Code Online (Sandbox Code Playgroud)
在主函数中,我将执行以下操作
int x, y;
swap(&x, &y);
std::cout << &x << " " << &y << std::endl;
Run Code Online (Sandbox Code Playgroud)
但似乎地址没有改变。
相反,如果我取消引用指针并尝试更改值,则会按预期交换值。我想知道为什么该函数不会更改指针指向的位置。
您的函数按值接受指针,因此返回后将看不到它所做的任何修改。实际上,您正在交换指针副本的值。