我搞砸了一个使用指针交换两个变量的值的函数,并且发现通过声明using namespace std
,我不需要将变量的地址作为参数传递就可以使用。传递int本身会使代码正常工作。
我怀疑这与std如何处理参数有关,但是我找不到答案。如果有人能指出我正确的方向,我将不胜感激。
1)没有using namespace std
#include<iostream>
void swap(int* X, int* Y);
int main() {
int a, b;
std::cin >> a;
std::cin >> b;
std::cout << a << "," << b << std::endl;
swap(&a, &b);
std::cout << a << "," << b << std::endl;
}
void swap(int* X, int* Y) {
int temp = *X;
*X = *Y;
*Y = temp;
}
2)使用using namespace std
#include<iostream>
**using namespace std;**
void swap(int* X, int* Y);
int main() {
int a, b;
std::cin >> a;
std::cin >> b;
std::cout << a << "," << b << std::endl;
swap(a, b);
std::cout << a << "," << b << std::endl;
}
void swap(int* X, int* Y) {
int temp = *X;
*X = *Y;
*Y = temp;
}
答案 0 :(得分:6)
不是。使用using namespace std;
,您最终可以调用std::swap,该参数通过引用获取其参数。这是using namespace std
是非常不好的做法的众多原因之一。