w1L*_*1ng 21 c++ pointers reference
我有一堆像这样的代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
此代码执行交换过程,因为我完全想要交换2个数字
但是当我想要用户的两个数字时如下;
int a;
int b;
cin >> a;
cin >> b;
swap(a, b);
cout << a << b;
Run Code Online (Sandbox Code Playgroud)
编译器给我一个关于整数到*整数错误的错误,这是预期的.为什么第一个代码进行了正确的交换,尽管我没有将这个方法用于&运算符?
ipc*_*ipc 58
在第一个例子中std::swap,因为你的而被称为using namespace std.第二个示例与第一个示例完全相同,因此您可能没有使用.
无论如何,如果你将你的函数重命名为my_swap或类似的东西(并改变每次出现),那么第一个代码应该不能正常工作,如预期的那样.或者,删除using namespace std并调用std::cin和std::cout明确.我会推荐第二种选择.