求教一个c的指针有关问题

求教一个c的指针问题typedef struct node{char d struct node *left , *right}tnodevoid mktree(tnode

求教一个c的指针问题
typedef struct node{char d; struct node *left , *right;}tnode;

void mktree(tnode **p)
{
*p=(tnode *) malloc(sizeof(tnode)))
.......


}


我不明白 *p=(tnode *) malloc(sizeof(tnode))) 该怎么理解

[解决办法]
比如main函数中有一个 tnode *pnode;
mktree(&pnode),就pnode的地址传入
*p=(tnode *) malloc(sizeof(tnode)))
*p是对 &pnode这个地址的解引用,其实也就是pnode
结果即是:pnode=malloc(sizeof(tnode))
也就是通过这个函数改变了实参pnode的值。