c++ 指针问题,函数传指针

#include<iostream>
using namespace std;
struct TreeNode{
    int data;
    TreeNode *left;
    TreeNode *right;
};
int nums[1005];
int findMax(int l,int r)
{
    int tmp=nums[l];
    int pos=l;
    for(int i=l+1;i<=r;i++)
    {
        if(tmp<nums[i])
        {
            tmp=nums[i];
            pos=i;
        }
    }
    return pos;
}
void CreateTree(TreeNode *root,int l,int mid,int r);
int main()
{
    int a;
    int len=0;
    TreeNode *root;
    while(scanf("%d",&a)!=EOF)
    {
        nums[++len]=a;
    }
    int mid=findMax(1,len);
    CreateTree(root,1,mid,len);
    return 0;
}
void CreateTree(TreeNode *root,int l,int mid,int r)
{
    if(l>r)
    {
        root=NULL;
    }
    else
    {
        root=new TreeNode;
        root->data=nums[mid];
        
        int relMid=findMax(l,mid-1);
        CreateTree(root->left,l,relMid,mid-1);
        
        relMid=findMax(mid+1,r);
        CreateTree(root->right,mid+1,relMid,r);
    }    
}

为什么创建二叉树后,root是NULL
CreateTree参数传递的都是指针

函数传参是复制。所以函数结束后,传入的变量不会变化,你修改的只是他的副本。传指针就是复制地址,你修改地址指向的内容会传递回函数外。而你要修改复制过来的地址,则不会起到做用

没看明白要问啥???

改为TreeNode *&root