关于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::cin
和std::cout
。 我会推荐第二个选项。