当前位置: 首页 > news >正文

深度剖析堆栈指针

为什么打印root的值与&root->value的值是一样的呢

 测试结果:

*号一个变量到底取出来的是什么?

以前我写过一句话,就是说,如果看到一个*变量,那就是直逼这个变量所保存的内存地址,然后取出里面保存的对应的值或者地址,

那么这句话该怎么来理解,可以这样讲

那么像上面打印的结果都是一样的,取出来的都是&num1的地址

下面上具体的代码说明:

#include <cstdio>
#include <cstdlib>using namespace std;int main()
{int num1 = 3;int *p_num1 = &num1;int **pp_num1 = &p_num1;int ***ppp_num1 = &pp_num1;printf("%d\n",*p_num1);//直逼num1,所以打出来是3printf("%d  %d\n",*pp_num1,&num1);//直逼p_num1,取出来就是num1的地址printf("%d  %d\n",*ppp_num1,&p_num1);//直逼pp_num1,取出来p_num1的地址//第一个*号直逼pp_num1,取出&p_num1地址//第二个*号直逼p_num1,取出&num1的地址printf("%d  %d\n",**ppp_num1,&num1);//这里有两个**,一个*直逼pp_num1保存的地址就是p_num1,取出来是//&num1的地址,然后再来一个*,直逼num1的地址,取出来的就是3printf("%d\n",**pp_num1);return 0;
}

运行结果:

,&(*root)->left这个表达式为什么会报错

说这个之前,我们先来分析一下下面这些表达式的取值

表达式1:printf("%d %d %d %d\n",&(*root),root,&root->value,&root);

 表达式2:printf("%d %d\n",&(*pp_root)->left,&root->left);

表达式3: printf("%d %d %d\n",(*pp_root)->left,root->left,&child->value);

再来说说,&(*root)->left它为什么报错

先来看一张图

再来分析上面首先*root是返回一个node对象本身,没有指针引用,因此->left编译器是会报错的

既然是返回node对象本身,那么就可以用.来进行引用,像下面这两个表达式值都是一样的

 这也就是它报错的原因

二叉树内存节点分析

 

好了,祝你早安,午安,晚安。 

http://www.lryc.cn/news/121612.html

相关文章:

  • C++笔记之静态成员函数的使用场景
  • Nginx的优化和防盗链
  • 第二十次CCF计算机软件能力认证
  • 一篇文章带你了解Java发送邮件:使用JavaMail API发送电子邮件的注意事项、发送附件等
  • kubernetes的日志
  • 设计HTML5文本
  • msvcr120.dll丢失怎样修复?总结三个dll修复方法
  • 选择题方法论——颉斌斌
  • 23.8.8 杭电暑期多校7部分题解
  • 《24海南大学835软件工程考研经验贴》
  • 【yolo系列:运行报错AttributeError: module ‘torch.nn‘ has no attribute ‘Mish‘】
  • Leetcode 剑指 Offer II 039. 直方图最大矩形面积
  • SpringBoot案例-部门管理-修改
  • element-ui表格数据为空,图片占位提示
  • C++ STL vector 模拟实现
  • 51单片机学习--红外遥控(外部中断)
  • 后端开发10.规格模块
  • 腾讯出了一个新聊天软件M8
  • C++ QT(一)
  • 微信小程序时钟
  • HttpRunner自动化工具之设置代理和请求证书验证
  • opsForHash() 与 opsForValue 请问有什么区别?
  • 具有吸引子的非线性系统(MatlabSimulink实现)
  • Linux一些常见的命令
  • 正则表达式的基本知识
  • 如何⽤webpack 来优化前端性能
  • 人机交互中的混合多重反馈
  • CSS:服务器字体 与 响应式布局(用法 + 例子 + 效果)
  • 24届近3年上海电力大学自动化考研院校分析
  • PostgreSQL查询慢sql原因和优化方案