C++ &;之间的区别是什么;c和*c声明?

C++ &;之间的区别是什么;c和*c声明?,c++,C++,我不明白: 以下两者之间的区别是什么: string Str ("Str"); char &C = Str [0]; 这是: string Str ("Str"); char *C = Str; 实际上,我不理解这个声明: char &C = Str [0]; ? 这使得C成为对Str[0]的引用。引用是访问变量的另一种方式。这基本上只是一种更优雅的方式来做指针所做的事情 这将c引用Str的第一个成员。访问c将访问Str[0] char *C = Str; 这里,c指向S

我不明白: 以下两者之间的区别是什么:

string Str ("Str");
char &C = Str [0];
这是:

string Str ("Str");
char *C = Str;
实际上,我不理解这个声明:

char &C = Str [0];
?

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

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

char *C = Str;

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

指针(char*c)和引用(char&c)之间的差异:

  • 引用必须立即初始化,而指针可能不初始化-您不能只写
    char&C
    ,必须写
    char&C=,但
    char*C正常。
  • 一旦初始化,引用就不能更改它引用的地址,而指针可以
  • 换句话说,指针可以有空值,并且可以使用指针执行算术运算


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

    将引用视为常量指针非常感谢,我不得不“混合”你的答案和其他答案,但你的答案对我来说更“清晰”。再次感谢
    char &C = Str [0];
    
    char *C = Str;