swap(int *,int *) 在使用和不使用运算符时显示不同的行为"&"

swap(int *,int *) showing different behavior when calling with and without "&"operator

本文关键字:int 显示 运算符 swap      更新时间:2023-10-16

我在选择排序程序中使用以下代码来交换值。当我传递像 swap(a[min],a[j]) 这样的参数时,它会交换值,但不增加"swaps"变量。但是当我传递像 swap(&a[min],&a[j]) 这样的参数时,它会交换值并增加"swaps"变量。我不明白引擎盖下发生了什么。
我正在使用 minGW 编译器。

void swap(int *x,int *y)
{
swaps++;
int temp;
temp=*x;
*x=*y;
*y=temp;
}

当你使用swap(a[min],a[j])时,你很可能在调用std::swap。避免的另一个原因

using namespace std;