“&c”和“*c”声明有什么区别?

3
我不明白: 以下两者之间有何区别:
string Str ("Str");
char &C = Str [0];

并且还有这个:

string Str ("Str");
char *C = Str;

实际上我不太理解这个声明:

char &C = Str [0];

?


将引用视为常量指针。 - Lachezar
3个回答

1

指针(char * C)和引用(char & C)之间的区别:

  1. 引用必须立即初始化,而指针可能不需要 - 你不能只写 char &C,你必须写 char &C = ...;,但是 char *C; 是可以的。
  2. 一旦初始化,引用不能更改其所引用的地址,而指针可以。

换句话说,指针可以具有 NULL 值,并且可以对指针执行算术运算。

此外,char &C 在某种程度上等同于 char * const C


非常感谢,我需要在你的答案和其他答案之间“混合”,但是你的答案对我来说更加“清晰”。再次感谢。 - Olivier Pons

0
char &C = Str [0];

这使得C成为对Str[0]的引用。引用是访问变量的另一种方式。它基本上只是指针所做的相同事情的更优雅的方式。有一些区别。

0
char &C = Str [0];

这将引用cStr的第一个成员。访问c将访问Str[0]

char *C = Str;

这里,c 指向 Str 的第一个成员。访问 c 不会访问 Str[0]。访问 *c 才会。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接