我有一堆像这样的代码:
#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;
编译器给出了一个关于整数到*整数错误的错误,这是预期的。为什么第一个代码进行了正确的交换,尽管我没有使用&
运算符的方法?
答案 0 :(得分:57)
在第一个示例中,由于您的std::swap
,系统会调用using namespace std
。
第二个示例与第一个示例完全相同,因此您可能没有使用。
无论如何,如果你将你的函数重命名为my_swap
或类似的东西(并改变每一次出现),那么第一个代码不应该按预期工作。或者,移除using namespace std
并明确调用std::cin
和std::cout
。我会推荐第二个选项。