*和&的含义符号

时间:2012-08-25 06:40:26

标签: c pointers

此代码中*&符号的含义是什么:

#include<stdio.h>
main()
{
  char *p;
  p="hello";
  printf("%s\n",*&*&p);
}

printf语句在上述程序中的作用是什么?具体来说,*&*&p是什么意思?

2 个答案:

答案 0 :(得分:9)

这些:

*&*&

是多余的,你永远不会在真正的项目中遇到如此荒谬的代码。 &符号取p的地址,星号*取消引用它以生成原始char*。我们来回......

将其视为:

*(&(*(&p)))

另外,main的无类型签名不会在现有的编译器上删除它,而不再假设返回类型int

答案 1 :(得分:4)

printf将打印字符串"hello",因为&addressOf运算符,它将返回指针的地址,然后*valueOf运算符将返回存储在指针地址中的值,后跟它。

所以从本质上讲,语句*&*&p将会读取

valueOf(addressOf(valueOf(addressOf(p))))

将返回存储在实际位置的字符串"hello"

希望这会对你有帮助!