#include <iostream>
char toupper(char& letter){
switch(letter){
case 'a':
return 'A';
break;
case 'b':
return 'B';
break;
case 'c':
return 'C';
break;
default:
return letter;
}
}
int main()
{
char labRat = 'a';
std::cout << toupper(labRat) << std::endl;
std::cout << labRat;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
#include <iostream>
char toupper(char& letter){
switch(letter){
case 'a':
return 'A';
break;
case 'b':
return 'B';
break;
case 'c':
return 'C';
break;
default:
return letter;
}
}
int main()
{
char labRat = 'a';
std::cout << toupper(labRat) << std::endl;
std::cout << labRat;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
即使我通过引用将它传递给我的函数,我的变量的值也不会改变。为什么不是我的第二个输出行A?
你确实通过labRat参照的功能,但你不改变的值letter(这是指labRat在调用者)中toupper。
这不是每个人的口味1,但代码像
return letter = 'A';
Run Code Online (Sandbox Code Playgroud)
是返回值以及设置参考值的一种方式。所述分配表达letter = 'A'具有值'A'和类型char。
1一些软件公司禁止return声明中的赋值,因为它们可能不清楚。也很容易将它们误读为return letter == 'A';.