C++中 string作为参数的传递(string类型的引用 )
2018年11月05日 12:46:25 emmmzhang 阅读数:189
C++ string作为参数的传递(string类型的引用 )
在传递参数的时候,如果参数是string类型,可以用string类型的引用,减少内存的拷贝。
例如:
void func(const string& para){}
int main(int agrc, char **argv){
//...
string str = "test";
func(test);
//...
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
测试代码如下:
#include <iostream>
#include <cstring>
using namespace std;
void func(const std::string& str){
cout << "str = " << str << endl;
cout << "address of \"str\" : " << &str << endl;
}
void funcB(const std::string str){
cout << "str = " << str << endl;
cout << "address of \"str\" : " << &str << endl;
}
int main(int agrc, char** argv){
string strInMain= "test";
func(strInMain);
funcB(strInMain);
cout << "strInMain = " << strInMain << endl;
cout << "address of \"strInMain\" : " << &strInMain << endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
func没有拷贝变量,而是直接将main中的strInMain的地址传入,所以在func中的参数str的地址和main中strInMain的地址相同。
funcB参数对strInMain进行拷贝,所以参数str的地址为新的内存空间