c - 指针、取消引用和引用

标签 c pointers

我声明一个这样的指针:

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/

相关文章:

java - 在Java中直接编辑JNI指针的内容

c++ - 在 Rcpp 中返回 size_t 的包装

c - void 指向结构的指针导致错误 'dereferencing ' void *' pointer'

更改返回的可变参数函数指针

c - 大小未知的可变长度数组

c - 为什么 sscanf 没有读取任何内容

c - C语言中令人困惑的分割问题

c - 为什么这个指针传递不起作用?

c++ - virtualalloc 的问题

c - 当虚拟内存使用量达到256GB时进程输入界面停止响应