string是一个类 它本质还是一个字符数组
关于string的各种函数 内部实现 操作符重载 之后再补充
#include <iostream>
#include <string>
void PrintString1(std::string name){
//相当于重新构造了一个新的对象并赋值 对这个对象对改变并不会影响到实参中的字符串
name+="lallalal";
std::cout<<name<<std::endl;
}
void PrintString2(std::string &name){//如果不希望改变原字符串的值可以加const
name+="enenne";
std::cout<<name<<std::endl;
}
int main(){
const char*name="test";//在内存中 默认字符串后面有一个\0中止 这样才知道字符串在哪里结束
char name2[6]={'a','b','c','d','e','\0'};//自己定义字符串数组的时候 要在最后加上\0 否则输出的时候会有问题
std::string name3="name3";
name3+="hahahah";//操作符重载?
std::cout<<name2<<std::endl;
std::cout<<name3<<std::endl;
PrintString1(name3);//实际上name3没有被改变
std::cout<<name3<<std::endl;
PrintString2(name3);//name3改变了 因为函数参数是直接引用的
std::cout<<name3<<std::endl;
}
将string作为函数参数 相当于创建了一个新的string对象并赋值 在被调函数中对该字符串的任何修改 its read only 并不会影响到main函数实参中的那个字符串
这时候就可以用引用 如果不希望改变原字符串的值 可以用const 常量指针