当前位置:首页 C++内部资料 > 正文

【内部资料】TreeNode* &root 和 TreeNode* root 有不同的含义和效果。

作者:野牛程序员:2023-09-06 14:48:56 C++内部资料阅读 2421
  1. TreeNode* &root

    使用 TreeNode* &root 允许函数修改调用它的地方的指针。这意味着函数可以修改原始指针指向的对象,例如修改二叉树的根节点,而这个修改会在函数外部可见。

    void insert(TreeNode* &root, int val) {
        if (!root) {
            root = new TreeNode(val); // 可以修改原始的 root 指针
        } else {
            // ...
        }
    }
    • TreeNode* 表示这是一个指向 TreeNode 结构体或类的指针。

    • & 表示这是一个引用,即传递的参数是指针的引用,而不是指针的拷贝。

    • root 是参数的名称,表示传递进来的引用参数的名称。

  2. TreeNode* root

    使用 TreeNode* root 传递指针参数时,函数会获得指针的副本。这意味着函数可以修改指针本身的值(例如,将其指向不同的内存位置),但这个修改不会在函数外部可见,也不会影响原始指针。

    void insert(TreeNode* root, int val) {
        if (!root) {
            root = new TreeNode(val); // 修改的是副本,不会影响原始的 root 指针
        } else {
            // ...
        }
    }
    • TreeNode* 仍然表示这是一个指向 TreeNode 结构体或类的指针。

    • root 是参数的名称,但它不是引用。

总之,TreeNode* &root 允许函数修改原始指针的指向,而 TreeNode* root 只允许函数修改指针的副本。在需要在函数内部修改原始指针指向的情况下,使用引用参数是有用的。如果只需要在函数内部操作指针而不影响原始指针,可以使用普通的指针参数。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击