你好,在以下代码中,建立二叉树的时候函数的参数为什么是这样的?

typedef struct TreeNode {
ElemType data;
struct TreeNode* LeftChild, * RigthChild;
}TreeNode, * BitTree;

void CreatePreOrderTree(TreeNode*& T) {
ElemType ch;
cin >> ch;//AB#D##C##
if (ch == '#')//说明这个位置是空结点
T = NULL;
else {
T = new TreeNode;//为结点开辟内存空间
T->data = ch;//生成结点
CreatePreOrderTree(T->LeftChild);//构建左子树
CreatePreOrderTree(T->RigthChild);//构建右子树
}
}
main(){
TreeNode* p;
CreatePreOrderTree(p);
}
请问各位 这个void CreatePreOrderTree(TreeNode*& T)函数的参数为什么不是void CreatePreOrderTree(TreeNode* T)这样的,还带了个&,指针p的类型明明是TreeNode*
类型的啊 可是为什么到了形参哪里就变成了TreeNode*& T这个样子,这个&是按照引用来理解还是按照地址来理解呢?按照地址来理解的话&和*应该是一对互逆运算符啊。要是按照引用来理解好像也不太对把?

烙印99
浏览 227回答 1
1回答

HUH函数

struct 结构类型是值类型 所以这里要加& 表示对TreeNode参数的引用如果把上面的TreeNode 用class来定义就不需要&了你要先弄清楚值类型和引用类型的区别
打开App,查看更多内容
随时随地看视频慕课网APP