C++函数返回为引用

#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;

char &get_val(string &str, string::size_type ix){
    return str[ix];
}

int main(int args, char*argv[]){
    string inputStr=argv[1];
    cout << "you input: " << inputStr << endl;
    get_val(inputStr,1)='b';
    cout << "now, input become: " << inputStr << endl;
    return 0;
}

 之前看到ROS里面, 居然有函数的返回值为xx &, 蒙了(这就是我为什么学C++的原因), 看了几天书, 意思是返回值为一个引用, 特别适合当"左值"(书上说的), 妈的, 你直接写一个函数, 把要替换的值传进去不完了么...

#include <iostream>
#include <string>

using std::cout;
using std::string;
using std::endl;

void changeStr(string& str, int ix, char replaceChar){
    str[ix]= replaceChar;

}

int main(int args, char*argv[]){
    string inputStr = argv[1];
    cout << "you input " << inputStr << endl;
    changeStr(inputStr, 1, 'c');
    cout << "now it became " << inputStr << endl;
    return 0;
}

 上面的方法一样治疗肾虚, 异曲同工.

但是会Java的我不仅想问, string & str跟string str作为形参, 有啥分别?因为Java里面是没有这个&这个东西的, 最起码我不知道有这个东西, 我试验了一下, 在C++/C 里面加这个, 理论上, 直接把形参给改变了, 妈的, 我写了上万行的C, 可以说从来没用过这个&....

原文地址:https://www.cnblogs.com/Montauk/p/6879286.html