您的位置:首页 > 其它

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

2017-04-22 12:21 183 查看

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

传值

传引用

传地址(两种)

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

其中,传值(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指向的变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  传值