c语言 结构体 指针变量

typedef struct treeT
{
    ElemType key;
    struct treeT* left;
    struct treeT* right;
}treeT, *pTreeT;



int main(int argc, char *argv[]) {
    pTreeT root = NULL;
    pTreeT* a ;
    a = &root;
    
    BT_Insert(rand() % BASE,a);
 // BT_Insert(rand() % BASE,&root);
    
    system("pause");
    return;

}

pTreeT BT_Insert(ElemType target, pTreeT* ppTree){
    pTreeT Node;
    assert( NULL != ppTree );

    Node = *ppTree;
    if (NULL == Node)
    {
        return *ppTree = BT_MakeNode(target);
    }


}

static pTreeT BT_MakeNode(ElemType target)
{
    pTreeT pNode = (pTreeT) malloc(sizeof(treeT));

    assert( NULL != pNode );

    pNode->key   = target;
    pNode->left  = NULL;
    pNode->right = NULL;
    
    return pNode;
}

定义一个treeT的结构体变量,pTreeT是一个指向treeT的指针类型,main函数中 pTreeT root = NULL 定义了一个指向结构变量的指针,类型为pTreeT,名字叫root,如图1。初值为null,然后pTreeT* a定义了一个 指向结构体指针的指针,名字为a ,把root地址的值赋给a 如图2。执行BT_Insert(rand() % BASE,a);,与执行BT_Insert(rand() % BASE,&root);效果是一样的,函数pTreeT BT_Insert(ElemType target, pTreeT* ppTree)传入参数,第一个为ElemType类型,第二个为 pTreeT* ,pTreeT本来就是指针类型, pTreeT* 为指向指针的指针,即是存储 pTreeT地址的变量 名称为ppTree, 返回类型是 pTreeT类型 。BT_Insert函数中定义了一个pTreeT 类型变量Node 执行 Node = *ppTree;后,Node指向了root 此时,Node 值为null , if (NULL == Node)判断后, 调用 BT_MakeNode 函数,  BT_MakeNode 返回一个 pTreeT 类型的变量 pNode,

最后内存中结果图示为(4) (纯属个人见解,有错请指出o(∩_∩)o


             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值