我声明一个这样的指针:
char *ptr = "hello";
当我这样做时
printf("%p\n", *&*&ptr);
结果是该指针的地址,但是当我这样做时
printf("%s\n", *&*&ptr);
结果是你好。
有人能解释一下为什么吗?
最佳答案
*&*&ptr
是一种奇怪的 ptr
书写方式(因为 *
取消了 &
)。
%p
需要一个指针,并打印指针的值(即它指向的地址)。因此,ptr
的值是有效输入,您将看到预期的结果。
%s
需要一个指向以 NUL 结尾的 char
值序列的指针,并打印这些 char
值(但不是 NUL) 。因此,ptr
的值是有效输入,您将看到预期的结果。
关于c - 指针、取消引用和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48715652/