Roh*_*hit 0 c c++ pointers addressof
任何人都可以解释printf如何在下面打印你好?
#include<stdio.h>
void main()
{
char *p;
p="hello";
printf("%s",*&*&p);
}
Run Code Online (Sandbox Code Playgroud)
我知道*&p ...表示p中的值,即字符串"hello"的地址.最初发生了什么*&
如你所说,*&p意味着p,这意味着连续*并&取消.因此也*&*&p成了p.
正如@Kerrek所说(在评论中)*&p产生一个左值,所以你再次获取它的地址.
请注意,您的代码不符合标准.main()必须具有int返回类型.而你不能分配"hello"给非const char*.一定是const char*.符合标准的符号代码如下:
#include<stdio.h>
int main()
{
const char *p = "hello";
printf("%s",*&*&p);
}
Run Code Online (Sandbox Code Playgroud)