二叉树排序和插入函数中的参数写法带*号,&号和不带符号都是什么意思
发布网友
发布时间:2024-10-04 20:27
我来回答
共2个回答
热心网友
时间:2024-11-23 22:17
首先你要明白的是Bitree这个由typedef出来的类型是什么?
Bitree是一个指向struct Tnode的指针类型。
这样后面的问题就好理解了。
(2)status createBitree(Bitree &T)
这个&是引用的意思,就是说通过引用传递参数。参数T是Bitree型。也就是一个指向struct Tnode的指针。你要注意引用传递和值传递的区别。具体可以参考C++的书籍,应该都有解释的。
(3)/*查找:*/
Bitree searchBST(Bitree root,int key,Bitree *father){ /**********这里root前面不加* 号,为什么在father前面又加*号,它们不都是指针么?*****************/
root是Bitree型,也就是指向struct Tnode的指针。
father是Bitree* 型,也就是指向struct Tnode指针的指针,这个和你理解的是一致的。:)
(4) /*********插入**********/
int InsertBST(BItree *root, int e){ /**********这里root前面又加* 号,与上面有什么不同呢?**************/
什么时候用Bitree,什么时候用Bitree* ,这个看实际的需要的。
一般,如果你想改变某个东西的值得话,你需要传递这个东西的地址给函数。也就是说函数的参数类型应该是这个东西的指针。那如果你想改变指针的值,(指针的指向),那你就需要传递指针的指针给函数。那函数的参数就应该是一个指针的指针类型。
s=(Bitree)malloc(sizeof(Tnode)) /******为什么前面是Bitree后面却是 Tnode,而不是BiTree呢?什么时候前后一样,什么时候不一样呢?****************/
Bitree的实际类型是一个指针,Tnode的实际类型才是struct Tnode。
struct本身的size和指向这个struct 的指针的size是两个完全不同的概念。就好象房间的大小和钥匙的大小一样。完全不同。
热心网友
时间:2024-11-23 22:18
status createBitree(Bitree &T) 中的&是按引用调用,也就是说在函数createBitree(Bitree &T)中队T的操作会改变T的值; Bitree searchBST(Bitree root,int key,Bitree *father)中的Bitree *father就是指向指针的指针,他定义了指向Bitree类型指针的指针father;*father=NULL中的*father这个指针被赋予null,注意*father代表Bitree型的指针; Tnode代表结构体类型,而Bitree代表指向Tnode类型的指针
指向指针的指针:http://wenku.baidu.com/view/748a3588680203d8ce2f246b.html
参考资料:http://wenku.baidu.com/view/748a3588680203d8ce2f246b.html