传递C +参数时出错

时间:2018-02-25 07:05:28

标签: c++

我正在学习C ++而且我是初学者。我正在创建一个函数来接收两次收购并改变并返回它们。应使用函数重载。但是,调用函数时会生成错误。我该怎么办?什么是int * 参数和int& 参数?这是我的剧本。

#include <iostream>


int swap(int val1, int val2)
{
    return val2, val1;
}

char swap(char val1, char val2)
{
    return val2, val1;
}

double swap(double val1, double val2)
{
    return val2, val1;
}

int main(void)
{
    int num1=20, num2 = 30;
    swap(&num1, &num2);
    std::cout<<num1<<' '<<num2<<std::endl;

    char ch1='A', ch2='Z';
    swap(&ch1, &ch2);
    std::cout<<ch1<<' '<<ch2<<std::endl;

    double dbl1=1.111, dbl2=5.555;
    swap(&dbl1, &dbl2);
    std::cout<<dbl1<<' '<dbl2<<std::endl;
    return 0;
}

1 个答案:

答案 0 :(得分:0)

返回值在这里没有意义。您想要修改已传递给函数的实际变量。为此,函数需要通过引用获取参数。

使用&字符声明引用。例如:

int num = 0;
int &ref = num;

refnum的引用。修改ref将修改num

ref = 1;
cout << num; // This will print "1"

所以你的交换函数需要将引用作为参数:

void swap(int &val1, int &val2)
{
    int tmp = val1;
    val1 = val2;
    val2 = tmp;
}

它不需要返回任何东西。

我知道你只是在这里练习和学习,但请记住,交换两个值是非常常见的事情,标准C ++库已经具备了它的功能。所以你应该在某个时候使用它。该函数为swap(),它位于<utility>标题中:

#include <utility>
// ...

int i1 = 0, i2 = 1;
char c1 = 'a', c2 = 'b';
double d1 = 0.0, d2 = 1.0;

std::swap(i1, i2);
std::swap(c1, c2);
std::swap(d1, d2);

它是一个模板函数,因此它可以交换所有内置类型的变量值。