我在c ++中遇到了一个问题,我调用了一个为事物分配一些值的函数,但是在函数完成后这些赋值会丢失。这是我的代码:
#include <iostream>
#include <string>
using namespace std;
void Input(string a, string b){
cout << "Input a: \n";
cin >> a;
cout << endl;
cout << "Input b: \n";
cin >> b;
cout << endl << "Inputen Strings (still in the called function): \n";
cout << a << " " << b << endl << endl;
};
int main(){
string c = "This didn't";
string d = "work";
Input(c,d);
cout << "Inputen Strings (now in the main function): \n";
cout << c + " " + d << endl;
return 0;
};
因此,无论何时运行它,(输入“Hello”然后“World”),程序运行如下:
输入a:
您好
输入b:
世界
Inputen Strings(仍然在被调用的函数中):
Hello World
Inputen Strings(现在在主函数中):
这不起作用
我不知道为什么它只是暂时保存这些值。任何帮助表示赞赏!
答案 0 :(得分:0)
通过引用传递您的字符串,这将允许被调用的函数更改它们,以便调用函数中的变量将具有指定的值。
现在通过值传递的方式,您只是发送变量的副本,以便在Input
返回时丢失新值。
void Input(string &a, string &b)
{
...
}
答案 1 :(得分:0)
更改您的方法签名以接受变量“&amp;”
的地址void Input(string &a, string &b)
没有“&amp;”运算符您只是将变量的副本发送到函数中,使用“&amp;”您通过引用传递变量的运算符的地址