首页 > 解决方案 > 无效交换(int *a,int *b);为什么交换(a,b)有效?

问题描述

swap我的函数原型是void swap(int *a, int *b);为什么当我调用swap(a, b)whereabare 整数时会调用它?

完整程序

#include <iostream>
void swap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main()
{
    using namespace std;
    int a = 9, b = 8;
    cout << "before swap:" << endl;
    cout << a << '\t' << b << endl;
    swap(a, b);
    cout << "after swap:" << endl;
    cout << a << '\t' << b << endl;
    cin.get();
    return 0;
}

观察到的行为

before swap:
9    8
after swap:
8    9

我知道应该是swap(&a,&b)调用函数swap。为什么它仍然有效?

标签: c++

解决方案


推荐阅读