This question already has answers here:
c++ change function's variable argument

(2个答案)


6年前关闭。




说我有
string stringInput = "hello";

alter(stringInput);

cout << stringInput;

和一个功能:
void alter(string stringIn){
     stringIn[0] = stringIn[3];
}

理想情况下,我希望cout产生“lello”。但是现在,它只返回原始的“hello”。我知道这与地址和指针有关...我将如何实现呢?

最佳答案

您的stringIn是一个局部变量。因此,当您将其作为值传递给函数时,它只会使用不同的地址创建一个新的stringIn。因此,您在alter中所做的更改只会影响新的stringIn。您需要在alter中接收stringIn的引用,以使其起作用。

void alter(string& stringIn){

 stringIn[0] = stringIn[3];
}

10-06 05:53