我声明了一个像这样的指针:
char *ptr = "hello";
当我这样做时
printf("%p\n", *&*&ptr);
结果是该指针的地址,但是当我这样做时
printf("%s\n", *&*&ptr);
结果是你好。
有人可以解释原因吗?
答案 0 :(得分:0)
*&*&ptr
是一种奇怪的写作方式ptr
(因为*
取消了&
)。
%p
需要一个指针,并打印指针的值(即它指向的地址)。因此,ptr
的值是一个有效的输入,您将看到预期的结果。
%s
期望指向NUL终止的char
值序列,并打印那些char
值(但不是NUL)。因此,ptr
的值是一个有效的输入,您将看到预期的结果。