期望输出带有指针和引用混合的代码



如果我们有这段代码:

char *i="Hello";
cout<<i<<endl;
cout<<*i<<endl;
cout<<&i<<endl;
cout<<*&i<<endl;
cout<<&*i<<endl;
cout<<*i**i<<endl;

我们怎么能指望&在直接编译代码之前解释输出?

这是相当基本的,您不需要编译它就可以知道发生了什么。

cout<<i<<endl;

你输出的是char* (C-string) i,所以输出的是Hello(加换行符)。


cout<<*i<<endl;

*ii, 'H'的第一个char,这就是打印的内容。


cout<<&i<<endl;

这将打印i (char**)的地址。


cout<<*&i<<endl;

ie。*(&i)。这将获得i的地址,如上所述,为您提供char**,然后对该地址解引用,为您提供char*,即i。因此,这将打印与第一行相同的内容。


cout<<&*i<<endl;

ie。&(*i)。这将取消对i的引用,从而得到字符串中的第一个char ('H'),然后获得该char的地址,从而得到char*char*与上面的i相同。


cout<<*i**i<<endl;

ie。(*i) * (*i)。从第二行可以知道,*i'H', char 'H'的十进制值是72。在char s上执行乘法运算时,它们将被提升到int。因此,输出将是72乘以72的int结果,即5184。


因此该代码段将输出:

Hello
H
<The address of i>
Hello
Hello
5184

相关内容

  • 没有找到相关文章

最新更新