谁能解释下 printf 是如何打印 hello 的?
#include<stdio.h>
void main()
{
char *p;
p="hello";
printf("%s",*&*&p);
}
我知道 *&p... 表示 p 中的值,即字符串“hello”的地址。最初的 *&
发生了什么最佳答案
如你所说,*&p
的意思是p
,也就是连续的*
和&
抵消了。因此 *&*&p
也变成了 p
。
正如@Kerrek(在评论中)所说,*&p
产生一个左值,因此您再次获取它的地址。
请注意,您的代码不符合标准。 main()
必须有 int
作为返回类型。并且您不能将 "hello"
分配给 non-const char*
。它必须是 const char*
。一个标准的一致性代码是这样的:
#include<stdio.h>
int main()
{
const char *p = "hello";
printf("%s",*&*&p);
}
关于c++ - 在 C 中使用 *&*&p 理解复杂的指针和寻址运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12303287/