*和&符号的含义

Gho*_*ing 5 c pointers

这段代码中的*&符号含义:

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

printf声明在上述计划中做了什么?具体来说,*&*&p意味着什么?

Ed *_* S. 9

这些:

*&*&
Run Code Online (Sandbox Code Playgroud)

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

把它想象成:

*(&(*(&p)))
Run Code Online (Sandbox Code Playgroud)

顺便说一下,你的无类型签名main不会在int不再假设返回类型的现代编译器上删除它.


Xmi*_*ndz 4

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

所以本质上,该语句*&*&p将读取

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

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

希望这会对您有所帮助!