C语言指针空间分配问题

如以下代码,其中root结构体指针还没有分配内存空间,怎么取地址?又怎么被函数CreatTree(TreeNode *root)中的root接受,没有地址也能被指针接收吗?


```c
typedef struct TNode {
    char val;
    struct TNode *left;
    struct TNode *right;
} TNode,*TreeNode;

void CreatTree(TreeNode *root){
//    代码块... 
}

int main() {
    TreeNode root;
    CreatTree(&root);
    return 0;
}


```

可以这样被结构体指针接收,但因为没分配内存空间,指针无法访问结构体的数据。
这就是CreatTree函数要做的事情,需要给这个结构体指针动态分配内存空间