在指针的帮助下交换时无法生成错误

Unable to generate an error in a case of swap with help of pointers

我试图在 C++ 中的交换代码中生成错误。有趣的是,它没有错误,而是成功地显示了相反的结果。我的代码如下所示:

#include<iostream>  
using namespace std; 

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

int main()                                                                       
{                                                                                
    int u = 10;                                                                  
    int v = 20;                                                                  
    int * p = &u;                                                                
    int * q = &v;                                                  
    swap(*p, *q);                                                                
    std::cout<<"u :-"<<u<<" v  :-"<<v<<endl;                                     
    return 0;                                                                    
} 

uv 的值被交换了。在这里,我传递的是指针值而不是引用,但是值被交换了,如何?

可以在以下位置找到确切的代码: https://ideone.com/kMJHL6

我认为你调用的是算法库的交换函数,而不是你的函数

swap(*p, *q);

由于 *p*q 的类型 而不是 int *,(只是 int)此代码 不会 调用您的 swap 函数。相反,它通过函数重载解析调用标准C++库中的函数std::swap

您的代码有 using namespace std; - 您的案例是说明您不应该使用它的原因之一。