c - 为什么它指向同一个地址?
问题描述
#include<stdio.h>
int main() {
int x = 5;
int* p = &x;
*p = 6;
int** q = &p;
int *** r= &q;
printf("%d\n",*p); //dereferencing p
printf("%d\n",*q); //getting address of q
printf("%d\n",**q); //dereferencing q
printf("%d\n",**r); //getting address of r
printf("%d\n",***r); //dereferencing r
}
变量 q 具有 p 的内存地址,而变量 r 具有 q 的内存地址,那么为什么在尝试打印 q 和 r 的内存地址时会产生相同的结果?
解决方案
您的评论表明您在这里误解了一些事情。
printf("%d\n",*q); //getting address of q
你没有得到q
. 您正在取消引用q
,这恰好是 的地址p
。*
IS 取消引用运算符。如果要打印 的地址q
,请执行以下操作:
printf("%p\n", (void*)&q); // No asterisk and you should use the %p specifier for printing pointers.
所以,因为你p=&x; q=&p;
当时已经完成了任务
**q
x
与或相同*p
*q
是相同的p
q
是一样的&p
&q
是地址q
推荐阅读
- javascript - React Hook API,我是否需要为 SetStateAction 设置依赖项?
- c++ - c ++ set with structs, set.find() 函数产生错误'无效比较器'
- go - golang pprof 堆计数含义
- ios - 通用应用程序:LaunchScreen 在横向启动时不尊重界面构建器约束
- c - 在 if-else 语句末尾添加“else”
- html - 如何让 Adyen SDK 在 IE 和 Edge 上运行
- datetime - fn:current-dateTime() 不返回毫秒
- deployment - Kubernetes中如何设置Deployment副本的不同环境变量
- reactjs - 如何在 React Native android 上制作一个包裹相机可点击的 TouchableOpacity?
- reactjs - Create-React-App:运行时错误 - 尚未调用 super()