【问题标题】:Why does passing int into function as pointer argument work when using namespace std is declared? [duplicate]为什么在声明使用命名空间std时将int作为指针参数传递给函数? [复制]
【发布时间】:2019-05-22 04:37:19
【问题描述】:

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

【问题讨论】:

    标签: c++ pointers std swap


    【解决方案1】:

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

    【讨论】:

    • 啊。所以在std中有一个同名的函数。非常感谢。
    猜你喜欢
    • 2021-01-22
    • 2012-11-23
    • 2017-08-24
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多