请教C++中关于将结构体指针类型写入形参表并引用的问题1

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:00:45
编译环境VC++6.0

结构体定义:
struct BiTreeNode
{
char data;
struct BiTreeNode *rchild;//右子树
struct BiTreeNode *lchild;//左子树
};

看到有函数形参表如下:

void InCreate(struct BiTreeNode *&Tnode)
{
...
}

InOrderTraverse(struct BiTreeNode *&Tnode)
{
...
}

int main()
{
struct BiTreeNode *Tnode;
InCreate(Tnode);
InOrderTraverse(Tnode);
getchar();
return 0;
}

请问:
1 函数定义中形参表中的*&应该怎么理解?
2 在main()中调用时InCreate(Tnode);为何又不用加&呢?此时Tnode不应为存储地址的变量吗?

小弟先谢谢大家啦!呵呵

1.指针的引用,比如int* a, a是一个变量,类型为int*, 那么int* &a 的意思就是将此变量(int*)型变量按引用(实参)方式传入函数
2.同一,如你定义函数void func(int* &a),若变量已经是int*型,何必再加解引用符*?

1L,指针的引用并非多此一举,乍看是没有意义,但是若你要改变一个指针变量的值,是使用指针的指针还是指针的引用呢? 我想是后者用的时候比较方便吧

*&应该理解为指针变量的引用(多此一举)