c的二级指针
2024-08-31 00:55:36
----"c 语言的精华在于指针的灵活性。学好指针的目的在于尽可能少的使用指针。"
在敲binary search tree(二叉查找树),遇到了问题。在删除的时候,如果删除的是root节点,那么要改变根节点的地址,在实现时会非常卵痛。后来发现有一种好的方法就是使用二级指针,这样可以轻松改变root节点的地址。我只需要改变指向root节点的指针的指针中的所存的地址就好了。为了搞明白二级指针,做了一下实验:
typedef struct Tree_Node
{
int val;
Tree_Node *left, *right, *parent;
Tree_Node(int x)
{
val = x;
left = NULL;
right = NULL;
parent = NULL;
}
}Node, *PNode;
int main()
{
Node x();
cout<<&x<<endl;
Node *p = &x;
cout<<&p<<" "<<p<<" "<<p->val<<endl;//&p : p自己的地址 p : 指向(x)的地址 p : 指向地址处(x)val值
Node **pp = &p;
cout<<&pp<<" "<<pp<< " "<<(*pp)<<" "<<(*pp)->val<<endl;//&pp : pp自己的地址 pp : 指向(p)的地址 *pp : 取出pp所存(p)地址处的值(&x)
//可以看到 PNode 实际上就是一个 Node*, 那么这里pnode就是一个(Node**)也就是一个指向p(一级指针)的二级指针
PNode *pnode = &p;
cout<<&pnode<<" "<<pnode<< " "<<(*pnode)<<" "<<(*pnode)->val<<endl;
return ;
}
最后完成了搜索二叉树的一些基本操作。附上gitlab仓库链接:git@gitlab.com:luntai/algorithm.git
最新文章
- js解析网址获取需要的数据
- 项目管理-Kick OFF 简称KO
- Unity3D UNet网络组件详解
- MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义
- 使用java 程序创建格式为utf-8文件的方法(写入和读取json文件)
- Maven提高篇系列之(一)——多模块 vs 继承
- CoreLocation MKMapView 地图
- 蓝桥杯--Quadratic Equation
- 队列(链式存储)C++模板实现
- Cocos2d-x 3.0 beta 中加入附加项目,解决无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory”
- Bluetooth LE(低功耗蓝牙) - 第二部分
- git 基本命令 (常用)
- Hot-Bar 軟板設計注意事項
- PO订单审批通过API
- Leetcode | 组目录
- 深入理解Java并发synchronized同步化的代码块不是this对象时的操作
- 20170907VS中EF模型文件.edmx文件上下级关系丢失问题
- [翻译].NET Core 3 Preview1和Windows桌面框架开源
- UR5 改造
- 【分区助手】如何扩大C盘容量?