为什么在声明 using namespace std 时将 int 作为指针参数传递给函数?

Why does passing int into function as pointer argument work when using namespace std is declared?

我正在搞乱一个使用指针交换两个变量值的函数,我发现通过声明 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;
}

没有。使用 using namespace std;,您最终会调用 std::swap,它通过引用获取其参数。这是 using namespace std 是非常糟糕的做法的众多原因之一。