5

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

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

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

4

2 回答 2

9

这些:

*&*&

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

把它想象成:

*(&(*(&p)))

顺便说一句,您的无类型签名 formain不会在int不再假定返回类型的现代编译器上削减它。

于 2012-08-25T06:45:16.070 回答
4

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

因此,从本质上讲,该声明*&*&p将显示为

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

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

希望这会对你有所帮助!

于 2012-08-25T06:51:38.857 回答