C++ string 作为形参与引用传递

记录一下自己将string作为参数传递的结果。
(自己感觉与int等基本类型无异。)

1. string 以引用形式传递

#include <iostream>
#include<string>

using namespace std;
void change_string(string& s)
{
    char c = s[0];
    for(int i=1; i<s.length(); i++)
    {
        s[i-1]=s[i];
    }
    s[s.length()-1]=c;
}
int main()
{
    string str;
    cin >> str;
    cout << str << endl;
    change_string(str);
    cout << str <<endl;
    return 0;
}

输入:
ABCD
输出:
ABCD
BCDA
说明在调用函数中的修改同样改变了主函数中变量str的值。

2.string 以形参方式传递

将chang_string 中的参数类型由string& 改为 string,代码如下:

void change_string(string s)
{
    char c = s[0];
    for(int i=1; i<s.length(); i++)
    {
        s[i-1]=s[i];
    }
    s[s.length()-1]=c;
}

输入:
ABCD
输出:
ABCD
ABCD

总体来看,c++ string类的参数传递好像与int等基本类型的参数传递一样,同时也没什么不正常之处。但是网上遍地都是:不要使用string作为参数传递。对此很是困惑,还望哪位大佬解释一下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值