刷题的的时候,碰到一个问题。
当递归调用函数时,传递参数,如果每一次要拷贝过去,那就浪费内存了,不妨直接引用传递。于是乎,我对string 进行了一次引用传递,偶然间发现下面这样的情况。
#include <bits/stdc++.h>
using namespace std;
void fun(string &s)
{
cout<<"s:\t"<<s<<endl;
}
int main()
{
string s;
s[0]='c';
fun(s);
return 0;
}
这样输出来的string 居然是空的,按理来说,不该是一个字符c嘛?
但是当我把代码改为:
#include <bits/stdc++.h>
using namespace std;
void fun(string &s)
{
cout<<"s:\t"<<s<<endl;
}
int main()
{
string s;
s.push_back('c');
fun(s);
return 0;
}
如此便没有问题了。