https://www.cnblogs.com/hslzju/p/5396987.html
若要通过函数B修改函数A中的某个变量a。需要获得变量a的地址,如果a是普通变量,需要获得一级指针。如果a是指针,需要获得二级指针。
比如有一颗二叉树如下:
typedef struct BiTNode{TElemType data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;
如果CreateBiTree用BiTNode*类型的形参
void CreateBiTree(BiTNode *T){......}int main(){struct BiTNode *p=NULL;CreateBiTree(p);}
这样T会指向一棵二叉树,但是p还是指向NULL。
所以应该传入二级指针
void CreateBiTree(BiTNode **T){......}int main(){struct BiTNode **p=NULL;struct BiTNode *b=NULL;p=&b;CreateBiTree(p);}
这样操作*T也就是操作main中的b。最后b也会指向一棵二叉树。
void CreateBiTree(BiTNode **T){......}int main(){struct BiTNode **p=NULL;struct BiTNode *b=NULL;p=&b;CreateBiTree(p);}
或者也可以返回指针
BiTNode * CreateBiTree(BiTNode *T){......return T;}int main(){struct BiTNode *p=NULL;p=CreateBiTree(p);}
把T(最终指向创建好的二叉树的树根,树根的类型也是BiTNode ), 返回给BiTNode *类型的p。这样p也指向创建好的二叉树的树根。
