【发布时间】:2018-10-01 20:25:54
【问题描述】:
我对在字符串中使用 & 字面量有点困惑。我看到以下两个代码的输出有很大不同:
#include <iostream>
using namespace std;
int main()
{
char st[]="This is a Sample String";
cout<<st[0];
return 0;
}
输出:T
#include <iostream>
using namespace std;
int main()
{
char st[]="This is a Sample String";
cout<<&st[0];
return 0;
}
输出:这是一个示例字符串
我知道 & 用作引用运算符以通过引用传递值。但我的问题是这里的实际工作原理。
【问题讨论】:
-
字符“&”有几种不同的含义。应用于表达式的
&运算符创建的是指针,而不是引用。您在引用类型中看到的&不是运算符。 -
在您展示的示例中,
&是“地址”运算符。它获取其操作数的地址,在这种情况下,操作数是st[0],&st[0]给出了st中第一个字符的地址。coutsoperator<<()被重载以接受const char *,它将其解释为以零结尾的字符串的第一个字符的地址(这是st包含的内容)。 -
@Peter 这应该是一个答案。
-
谢谢@Peter。真的很有帮助。
标签: c++ string pass-by-reference