传递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,整数2) { 返回val2,val1; } 字符交换(字符值1,字符值2) { 返回val2,val1; } 双交换(双价1,双价2) { 返回val2,val1; } 内部主(空) { int num1=20,num2=30; 互换(货币单位1和货币单位2); std::cout

传递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,整数2) { 返回val2,val1; } 字符交换(字符值1,字符值2) { 返回val2,val1; } 双交换(双价1,双价2) { 返回val2,val1; } 内部主(空) { int num1=20,num2=30; 互换(货币单位1和货币单位2); std::cout,c++,C++,返回值在这里没有意义。您希望修改已传递给函数的实际变量。为此,函数需要通过引用获取参数 通过使用&字符声明引用。例如: int num = 0; int &ref = num; ref是对num的引用。修改ref将修改num: ref = 1; cout << num; // This will print "1" 它不需要返回任何东西 我知道你在这里只是练习和学习,但是记住两个值交换是非常普通的事情,标准C++库已经有了它的功能。所以你应该在某个时候使用它。函数是“代码

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

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

int num = 0;
int &ref = num;
ref
是对
num
的引用。修改
ref
将修改
num

ref = 1;
cout << num; // This will print "1"
它不需要返回任何东西

我知道你在这里只是练习和学习,但是记住两个值交换是非常普通的事情,标准C++库已经有了它的功能。所以你应该在某个时候使用它。函数是“代码> SWAP-())/<代码>,它在<代码>标题:

#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);
#包括
// ...
inti1=0,i2=1;
字符c1='a',c2='b';
双d1=0.0,d2=1.0;
标准::交换(i1,i2);
标准:互换(c1,c2);
标准:互换(d1、d2);

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

请阅读,因为这些函数不是我完全理解的可能的副本,但它仍然会出错。“错误:没有用于调用“交换”(int*,int*)的马赫函数“@dr_coding不向函数传递指针。请注意,在上面的代码中,它表示
std::swap(i1,i2)
,而不是
std::swap(&1,&2)
。当您声明变量时,在所声明变量的名称之前使用
&
将该变量作为引用。当您计算变量时,
&
获取变量的地址,这意味着结果是指针。您不应将指针传递给引用的函数。您只需自己传递变量。谢谢你的好意。然而,我在我的学习材料博客中找到了答案。
#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);