说我有
string stringInput = "hello";
alter(stringInput);
cout << stringInput;
和一个功能:
void alter(string stringIn){
stringIn[0] = stringIn[3];
}
理想情况下,我希望 cout 制作“lello”。但现在它只是像原来一样返回“hello”。我知道这与地址和指针有关......我将如何实现这一点?
您需要做的就是通过引用传递字符串:
void alter(string& stringIn){
// ^
stringIn[0] = stringIn[3];
}
您还应该相应地修改您对alter()
.
这实际上只是因为创建了一个新的字符串副本以在函数中使用。要直接在函数中修改字符串,请在函数头中的字符串名称前添加一个 &,如下所示:
void alter(string &stringIn){
通过引用传递字符串。否则,您可以只从函数返回一个字符串。
您的 stringIn 是一个局部变量。因此,当您将它作为值传递给函数时,它只会创建一个具有不同地址的新 stringIn。因此,您在 alter 中所做的更改只会影响新的 stringIn。您需要接收 stringIn 的引用alter
以使其工作。
void alter(string& stringIn){
stringIn[0] = stringIn[3];
}