qq_29523495 2021-11-23 10:22 采纳率: 75%
浏览 16
已结题

c++关于引用指针和指针作为参数调用的问题

c++ 关于引用指针的问题:(下面是代码)
在main函数中BiTree 只定义了T 而没有初始化。在createBITree中用指针传进来(BiTree T)会报错,没有初始化。 但是用引用传进来(BiTree &T
)就不会报错。这到底是为什么? 而且就算我在main中初始化了BiTree T = new BiTreeNode; 运行结果也不正确。想知道为什么。


typedef struct node
{
    struct node *lchild;
    struct node *rchild;
    char data;

}BiTreeNode, *BiTree; 

void createBiTree(BiTree T)
{
    char c;
    cin >> c;
    if ('#' == c)             //当遇到#时,令树的根节点为NULL,从而结束该分支的递归
        T = NULL;
    else
    {
        T = new BiTreeNode;
        T->data = c;
        createBiTree(T->lchild);
        createBiTree(T->rchild);
    }
}

void preTraverse(BiTree T)
{
    if (T)
    {
        cout << T->data << " ";
        preTraverse(T->lchild);
        preTraverse(T->rchild);
    }
}

int main()
{
    BiTree T ; 
    createBiTree(T);
    cout << "前序遍历二叉树:" << endl;
    preTraverse(T);
    postTraverse(T);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • bostonAlen 2021-11-23 10:52
    关注

    传引用,形参就是实参。
    就直接对T操作。
    传指针,实参T未被修改。
    此时你得传递实参的指针或者引用,才能修改实参,
    createBiTree(BitTree *)
    调用时
    BiTree *T ;
    createBiTree(T);
    才能把T的值从函数中传出来

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 创建了问题 11月23日

悬赏问题

  • ¥15 调用函数时,无关变量的改变引起函数值的改变
  • ¥15 xy坐标转化为经纬度坐标
  • ¥15 一般三角模糊数的上界值和下届值取中值的多少比较合理?
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥20 Hbase启动失败,无法启动HMaster
  • ¥20 Lumerical FDTD solutions 中模型的相对阻抗,有效介电常数和有效磁导率的实部和虚部的数据如何获得?
  • ¥100 sql reporting service 远程smtp服务器配置支持
  • ¥15 ppyoloe_r带角度目标检测,loss_cls没法收敛
  • ¥15 淘宝交易指数如何解读,其关联的数据指标是什么
  • ¥15 Linux下安装搜狗拼音不能显示中文