首页 新闻 会员 周边

C++取地址符

0
[已解决问题] 解决于 2022-07-01 19:42

题目来源剑指offer58
代码如下:
class Solution {
public:
string reverseLeftWords(string s, int n) {
reverseString(s, 0, n - 1);
reverseString(s, n, s.size() - 1);
reverseString(s, 0, s.size() - 1);
return s;
}
private:
void reverseString(string& s, int i, int j) {
while(i < j) swap(s[i++], s[j--]);
}
};
为什么reversestring函数里第一个字符串后要加取地址符啊,这不就改变字符串s的类型了吗?

C++
象羊的主页 象羊 | 初学一级 | 园豆:191
提问于:2022-07-01 17:37
< >
分享
最佳答案
0

这个在C++里叫引用/reference, 差不多相当于自动帮你dereference的指针

奖励园豆:5
jakio6 | 小虾三级 |园豆:1318 | 2022-07-01 19:34

谢谢,之前只学了C语言,刚刚查到引用修改实参了。

象羊 | 园豆:191 (初学一级) | 2022-07-01 19:41
其他回答(1)
0

这是 C++ 的语法糖。也就是引用。底层实现上就是 T& 这个东西就变成了指针 T*。但是你写代码的时候,可以直接按引用来写,编译器编译的时候会把你的代码调整成和指针版本的代码等效,例如对于 T& t;你写 t = xxx,编译的时候就相当于 *t = xxx 。

hoodlum1980 | 园豆:559 (小虾三级) | 2023-01-10 16:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册