关于C ++中指针和引用的混淆

我有一堆这样的代码:

#include <iostream>
using namespace std;

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {

    int a;
    int b;
    a = 7;
    b = 5;
    swap(a, b);
    cout << a << b;

    return 0;
}

这段代码完成交换过程,因为我确实想要交换2个数字

但是,当我需要用户的两个号码如下:

int a;
int b;
cin >> a;
cin >> b;
swap(a, b);
cout << a << b;

编译器给我一个关于整数到整数错误的错误,正如预期的那样。 为什么第一个代码做正确的交换,尽管我没有用& operator来使用该方法?


在第一个示例中,由于using namespace std ,因此调用了std::swap 。 第二个例子与第一个例子完全相同,所以你可能没有使用。

无论如何,如果您将函数重命名为my_swap或类似的东西(并更改每次出现的次数),那么第一个代码不应该按预期工作。 或者,删除using namespace std并显式调用std::cinstd::cout 。 我会推荐第二个选项。

链接地址: http://www.djcxy.com/p/5049.html

上一篇: Confusion about pointers and references in C++

下一篇: How to add local jar files to a Maven project?