二叉树的建立中指向指针的指针的运用
来源:互联网 发布:简单的图片上传js 编辑:程序博客网 时间:2024/06/07 02:58
刚开始学C语言,对指针不是很了解,这两天看《大话数据结构》中二叉树的建立那里,运用了指向指针的指针,迷茫了一天,现在终于有了一点点思路,赶紧记录下来。在网上查了一句话:如果希望在一个函数的参数中改变一个指针的值,只能传这个指针的指针给这个函数。我理解的意思就是,如果我们调用函数时传入一个指针参数,我们在这个函数中不能修改这个指针的值,只能修改这个指针指向的内容,如果想要修改它的值,就必须把这个指针的指针作为参数传进去。比如:
void func(char **ptr){*ptr = NULL;}int main() {
char a = 'a';char *ptr = &a;func(&ptr);}
调用完func()这个函数后,主函数中的ptr现在不指向任何东西,ptr中保存的地址现在为NULL,因为在func()函数中修改了这个指针的值。如果将函数定义为func(char *ptr),则只能修改这个指针指向的东西,不能修改值。
在二叉树的建立中,使用指向指针的指针也是同样的道理:
typedef struct BiTNode{ElemType data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;
这里,BiTree为指向BiTNode的指针。建立二叉树过程如下,约定按照前序遍历输入,空格表示不存在子节点。
CreateBiTree(BiTree *T){char c;scanf("%c",&c);if(' '==c){*T=NULL;}else{*T=(BiTNode *)malloc(sizeof(BiTNode));(*T)->data=c;CreateBiTree(&((*T)->lchild));CreateBiTree(&((*T)->rchild));}}
因为我们这建立二叉树这个函数中需要修改BiTree的值,所以函数参数需要传入BiTree的指针,也就是指向BiTNode的指针的指针。
可能我的理解有错误,请多多指教!Thanks!!!
1 0
- 二叉树的建立中指向指针的指针的运用
- 详解c中指向指针的指针
- C语言中指向指针的指针
- C++中指向指针的指针
- 函数参数中指向指针的指针
- 结构体中指向函数的指针
- 结构体中指向函数的指针
- 结构体中指向函数的指针
- C++中指向成员的指针
- 结构体中指向函数的指针
- C++中指向成员函数的指针
- class中指向Data Members的指针
- C++中指向成员函数的指针
- c++中指向函数的指针
- C语言中指向函数的指针
- C语言中指向函数的指针
- C语言中指向函数的指针
- c++中指向指针的指针怎么理解?
- samba 服务器配置
- mfc-CFileDialog类
- Python服务器开发一:python基础
- 将Cocos2d-x的libcurl单独打包到Android
- 完整版)原因可能是堆被损坏,这也说明 中或它所加载的任何DLL 中有bug】的解决...
- 二叉树的建立中指向指针的指针的运用
- DWR第一个示例
- LDD3源码分析之访问控制
- c# 调用CMD命令行,执行
- Android——Android布局优化(include、ViewStub、merge)
- Python服务器开发二:Python网络基础
- QT Demo 之 calqlatr(2) calqlatr.qml
- 在VC++应用程序中实现颜色选择组合框
- Android的socket通信的长连接,有心跳检测