关于传值、传引用、传地址的一点小理解

来源:互联网 发布:汽车里程表调校软件 编辑:程序博客网 时间:2024/06/10 19:43

关于传值、传引用、传地址的一点小理解

  • 传值
  • 传引用
  • 传地址(两种)

函数的形参可以是传值,传地址,传引用。

其中,传值(fun(string str))不可以改变要传递的变量。

int main(){    string str3="abc";    trans_X(str3);    cout<<str3<<endl;    return 0;}string trans_X(string str){    for(auto &c:str)    {        c='X';    }    return str;}

结果为abc。

而传引用(fun(string &str))和传地址(fun(string *str))可以改变要传递的变量。
先来看看传引用。

int main(){    string str3="abc";    trans_X(str3);    cout<<str3<<endl;    return 0;}string trans_X(string &str){    for(auto &c:str)    {        c='X';    }    return str;}

结果是XXX。

接下来是传地址。

int main(){    string str3="abc";    trans_X(&str3);    cout<<str3<<endl;    return 0;}string trans_X(string *str){    for(auto &c:(*str))    {        c='X';    }    return *str;}

结果是XXX。

其中,形参还可以是const常量,默认函数对要传进来的参数不作修改。

传常量值,fun(const string str)不能修改str变量,只能将str用于赋值。
传常量引用,fun(const string &str)不能修改str变量,只能将str用于赋值。
传顶层const指针,fun(string * const str)可以修改str指向的变量,但是不能修改str,即不能修改str的指向。
传底层const指针,fun(const string *str)不可以修改str指向的变量。

1 0
原创粉丝点击