c - 如何评估c中的双指针?
问题描述
我正在学习c,我对这个双指针问题感到很困惑。
int x = 44;
int *p = &x;
int **t = &p;
bool a = (*t = &x);
我需要判断是否a
会true or false
,正确答案是true
。我的想法是t
指向 的地址p
,并p
指向 的地址x
。我知道如果你放**t
,它应该指向的地址x
,但我想如果你只是放*t
它应该指向的地址p
。谁能解释一下?
解决方案
int x = 44;
声明整数变量 x,它存储值 44。
int *p = &x;
声明名为 p 的整数指针变量,p 现在存储 x 的地址。
int **t = &p;
声明指向称为 t 的 int 类型指针的指针,t 存储 p 的地址。(指针也有地址)
bool a = (*t = &x);
在C中;
'*' = 从地址中提取值(取消引用)
'&' = 给出变量的地址(参考)
因为t
是一个指向存储在 中的值的指针p
。*t
将是存储在 中的值p
,即 的地址x
。(我们在第二行中发现了这一点)
另一方面,由于&
在变量上使用了x
。这将提取x
.
因此*t == &x
,它将布尔值 a 设置为 true。
推荐阅读
- encryption - 如何解密电报网络请求
- javascript - 在 Wordpress 中延迟内联脚本
- java - Spring Data JPA:仅按 java.time.LocalDateTime 列的日期部分排序
- google-apps-script - 如何在不更改 URL 的情况下重新发布 Web 应用程序
- javascript - 交互式更新下拉列表
- node.js - NodeJS,CPU密集型操作进行得很顺利,我该如何调试?
- mysql - 2020-09-01 - 2020-08-31 = 70 天
- regex - 如何在符合 POSIX BRE / ERE 的同时更改我的表达式以返回相同的结果?
- amazon-web-services - 在 AWS 路由 53 上配置通配符记录
- html - 样式表或页面