c++ - 交换两个指针

标签 c++ pointers

<分区>

我正在尝试编写一个函数,该函数将两个指针作为参数,然后使第一个指针指向第二个指针指向的对象,第二个指针指向第一个指针指向的对象。

void swap(int *x, int *y)
{
    int *s;
    s = x;
    x = y;
    y = s;
}

在主函数中,我会做类似的事情

int x, y;
swap(&x, &y);
std::cout << &x << " " << &y << std::endl;

但地址似乎没有改变。

如果相反,我取消引用指针并尝试更改值,则值会按预期交换。我想知道为什么这个函数不会改变指针指向的位置。

最佳答案

您的函数按值接受指针,因此它所做的任何修改在返回后都将不可见。实际上,您正在交换指针的拷贝的值。

关于c++ - 交换两个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18498582/

相关文章:

c++ - 返回指向不可修改成员数组的指针 C++ gcc 警告

c++ - C 与 C++ 函数问题

c++ - 用户定义的结构/类计算

c++ - 是否可以在不调用包含对象的析构函数的情况下清空 map 的内容?

java - 分配两个彼此相等的数组问题

c - 我们如何标准化指针?

c++ - 将 vector 传递给函数(指针/地址)

c++ - Visual Studio调试优化如何工作?

c++ - 阵列衰减和修改

c - 结构体中元素之一的数组初始化