C++ 带指针的代码输出的期望值&;参考混合物

C++ 带指针的代码输出的期望值&;参考混合物,c++,pointers,reference,cout,C++,Pointers,Reference,Cout,如果我们有这段代码: char *i="Hello"; cout<<i<<endl; cout<<*i<<endl; cout<<&i<<endl; cout<<*&i<<endl; cout<<&*i<<endl; cout<<*i**i<<endl; char*i=“你好”; cout基本上,您不需要编译它来了解发生了什么

如果我们有这段代码:

char *i="Hello";

cout<<i<<endl;
cout<<*i<<endl;
cout<<&i<<endl;
cout<<*&i<<endl;
cout<<&*i<<endl;
cout<<*i**i<<endl;
char*i=“你好”;

cout基本上,您不需要编译它来了解发生了什么

cout<<i<<endl;
*i
i
的第一个
char
'H'
,这就是打印的内容


例如,
*(&i)
。这将获得如上所述的
i
地址,给您一个
char**
,然后取消引用该地址,给您一个
char*
,即
i
。因此,这将打印与第一行相同的内容


例如,
(*i)*(*i)
。正如第二行所知,
*i
'H'
,而
char
'H'
具有十进制值72。在
char
s上执行乘法时,它们将被提升为
int
。因此,输出将是72乘以72的
int
结果,即5184


因此,该代码段将输出:

Hello
H
<The address of i>
Hello
Hello
5184
你好 H 你好 你好 5184
你通常用词来解释事情。像这样的练习通常是为了证明你理解解引用
*
和地址
&
语法。
cout<<&i<<endl;
cout<<*&i<<endl;
cout<<&*i<<endl;
cout<<*i**i<<endl;
Hello
H
<The address of i>
Hello
Hello
5184