我正在学习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;
}
答案 0 :(得分:0)
返回值在这里没有意义。您想要修改已传递给函数的实际变量。为此,函数需要通过引用获取参数。
使用&
字符声明引用。例如:
int num = 0;
int &ref = num;
ref
是num
的引用。修改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);
它是一个模板函数,因此它可以交换所有内置类型的变量值。