【发布时间】:2021-04-17 16:13:18
【问题描述】:
我实际上在想这个程序应该抛出一个编译错误(因为我正在将值传递给交换方法而不是 &a,&b)但我很震惊地看到它成功执行了。 所以,我发布这个是为了知道它是如何/为什么没有任何错误地执行的。
#include <iostream>
using namespace std;
void swap(int* x, int* y)
{
int z = *x;
*x = *y;
*y = z;
}
int main()
{
int a = 45, b = 35;
cout << "Before Swap\n";
cout << "a = " << a << " b = " << b << "\n";
swap(a, b);
cout << "After Swap with pass by pointer\n";
cout << "a = " << a << " b = " << b << "\n";
}
【问题讨论】:
-
swap(&a, &b);请注意,您使用的是using namespace std;,并且有std::swap。 -
因为你打电话给
std::swap而不是你自己的。 -
感谢 cmets。我只是想知道我是否做对了,所以发生了什么,当我调用 swap(a,b) 并且因为我没有定义一个接收值的交换函数。因此它在 STD 中搜索函数,因为它在那里找到了一个函数,所以它正在执行,对吗?
标签: c++ pointers pass-by-reference pass-by-value pass-by-pointer