• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++中string作为参数的传递(传引用,减少内存的拷贝;const参数) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在传递参数的时候,如果参数是string类型,可以用string类型的引用,减少内存的拷贝。

C++传参尽量不用指针,防止弄乱(引用比指针简单~~

#include <iostream>
using namespace std;//不要忘记声明变量空间,不然无法使用string类型

void funcA( string& str){
    cout << "传引用 :str = " << str << endl;
    cout << "\"str\" 的地址: " << &str << endl;
}

void funcB(const string str){
    cout << "传值:str = " << str << endl;
    cout << "\"str\"的地址 : " << &str << endl;
}


int main(int agrc, char** argv){
    string strInMain= "test";

    funcA(strInMain);//传引用, 减少内存的拷贝
    funcB(strInMain);//传值,传递的是实参的副本

    cout << "strInMain = " << strInMain << endl;
    cout << "\"strInMain\"在主函数中的地址 : " << &strInMain << endl;
    cout <<strInMain;

    return 0;
}

 

 

 

funA没有拷贝变量,而是直接将main中的strInMain的地址传入,所以在funA中的参数str的地址和main中strInMain的地址相同。因此可以在函数中对字符串修改,传引用。
funB参数对strInMain进行拷贝,所以参数str的地址为新的内存空间,传值

如果不想让函数修改参数的值,只要把参数声明为const常量即可

void func(const   string& str){
    cout << "str = " << str << endl;
    cout << "address of \"str\" : " << &str << endl; 
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#的Contains()值还是引用发布时间:2022-07-13
下一篇:
c#桌面窗体软件【学习笔记】发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap