【发布时间】:2020-08-17 05:09:06
【问题描述】:
int main() {
// Complete the program
string a,b;
getline(cin,a);
getline(cin,b);
cout<<a.size()<<" ";
cout<<b.size();
string c=a+b;
cout<<endl<<c;
swap(a[0],b[0]);
cout<<endl<<a<<" "<<b;
return 0;
}
void swap(string s1,string s2){
string temp=s1;
s1=s2;
s2=temp;
}
目标是交换两个字符串的第一个元素,但我为此创建了一个通用函数,甚至做对了。但是,出乎意料的是,我没有使用按引用传递或指针传递!即便如此,当我最终尝试输出 a 和 b 时,这些更改是永久性的!
从逻辑上讲,它不应该起作用,但它起作用了。和字符串有关吗?
【问题讨论】:
-
注意:std::swap 存在。
-
发布所有代码,包括标题包含,而不是 sn-ps。有一个
std::swap函数,而且很可能是该函数被调用。 -
你能告诉我们你使用了哪个输入 a 和 b 吗?我同意,这不应该工作......
-
你知道我有心灵感应吗?我碰巧知道您的代码开头有
using namespace std;,即使您没有显示它。我应该去算命... -
a[0]和b[0]是单独的char引用。它不是调用你的函数来接受字符串。
标签: c++ string pass-by-reference pass-by-value