zoukankan      html  css  js  c++  java
  • 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, 可以说从来没用过这个&....

  • 相关阅读:
    Android 中类似ModelWindow的一个实现
    DIV的圆角表现和TAB切换
    Android SDK Manager Google Apis 下载
    Android ADT初始化失败
    2层Folder删除问题,父文件夹删不掉
    【转】Android使用Log4j例子
    编译和解释的区别
    局部变量和全局变量
    函数的几种参数
    格式化
  • 原文地址:https://www.cnblogs.com/Montauk/p/6879286.html
Copyright © 2011-2022 走看看