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 运筹学排序问题中的在线排序
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧