BiTree &T后面传值为什么是T->lchild而不是&(T->lchild)

img


为什么后面调用的时候是T->lchild为什么不用&(T->lchild) 这里的T又是什么意思。好懵

T就是个变量
它的类型是BiTree
形参里面写&T表示传递参数的地址
而后面的赋值里你不可以给地址赋值啊

T->lchild本身就已经是指针了,不需要再取地址了。而且你写的&是引用的意思,也就是起别名,就算不是指针而是一个数据,也不需要加&,除非是用*做参数
举个例子来说

int fun(int &a,int*b){
return 0;
}
    int x = 0;
    int y = 20;
    int z[10];
    int *p;
    func(x, &y);//这么调用,因为y是变量,本身并一个指针
    func(x, z);
    func(x, p);