【问题标题】:Confusion about pointers and references in C++关于 C++ 中的指针和引用的困惑
【发布时间】:2012-11-04 08:43:52
【问题描述】:

我有一堆这样的代码:

#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;

编译器给了我一个关于intint* 的错误,这是预期的。为什么我没有使用 &amp; 运算符的方法,但第一个代码进行了正确的交换?

【问题讨论】:

标签: c++ pointers reference


【解决方案1】:

在第一个例子中,std::swap 被调用,因为你的using namespace std。 第二个例子和第一个完全一样,所以你可能没有用。

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

【讨论】:

  • @w1LL1ng 尝试删除using namespace std。事实上,永远不要使用它!
  • @w1LL1ng 但您是否也如答案中所述“更改每一次出现”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2021-06-23
  • 2011-04-24
  • 1970-01-01
相关资源
最近更新 更多