【发布时间】:2012-09-06 15:20:58
【问题描述】:
谁能在下面解释一下 printf 是如何打印 hello 的?
#include<stdio.h>
void main()
{
char *p;
p="hello";
printf("%s",*&*&p);
}
我知道*&p...表示p中的值,即字符串“hello”的地址。最初的 *& 发生了什么
【问题讨论】:
-
*&,先取地址再解引用就是身份,所以*&*&p就是p。 -
一个疑问...假设 p 的地址是 200 而“hello”的起始地址是 100...所以 *&*&p---*&*200---*&100...。现在 &100 会给出什么......通常 &p 表示变量 p 的地址......以及它将如何为 &100 工作......感谢回复
-
不,这样不行。只能取左值的地址,所以
&100没有意义。&p给你一个char**,指向p。取消引用,*&p为您提供&p指向的对象,即p。 -
感谢您的回复...现在我明白了...