【发布时间】: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;
}
【问题讨论】: