此代码中*
和&
符号的含义是什么:
#include<stdio.h>
main()
{
char *p;
p="hello";
printf("%s\n",*&*&p);
}
printf
语句在上述程序中的作用是什么?具体来说,*&*&p
是什么意思?
答案 0 :(得分:9)
这些:
*&*&
是多余的,你永远不会在真正的项目中遇到如此荒谬的代码。 &符号取p
的地址,星号*
取消引用它以生成原始char*
。我们来回......
将其视为:
*(&(*(&p)))
另外,main
的无类型签名不会在现有的编译器上删除它,而不再假设返回类型int
。
答案 1 :(得分:4)
printf
将打印字符串"hello"
,因为&
是addressOf
运算符,它将返回指针的地址,然后*
为valueOf
运算符将返回存储在指针地址中的值,后跟它。
所以从本质上讲,语句*&*&p
将会读取
valueOf(addressOf(valueOf(addressOf(p))))
将返回存储在实际位置的字符串"hello"
。
希望这会对你有帮助!