C语言二级指针的问题

发布网友 发布时间:2022-04-21 15:43

我来回答

2个回答

热心网友 时间:2023-04-27 12:21

// PTREE 可以理解为是 struct TreeNode * 的别名,
// PTREE 类型的变量,即是指向 struct TreeNode 结构体变量的指针,
// 那么,PTREE * 类型的变量,就是指向 struct TreeNode 结构体变量指针的指针,
// 要理解为什么参数中传递的是指向 PTREE 类型的指针,首先要了解 C 语言参数传递的机制
// C 语言中,形参只是实参值的一份拷贝,它们仅仅是值相等,除此外再无其他关联,
// 重要的是,它们的地址不同,也就是说,改变了形参,实参并不受其影响。
// 而为了影响到实参,就需要知道实参的地址,通过其地址来修改实参。
// 通过把实参的地址传给形参,就可以修改与其相关联的实参的内容。
// C 语言的传参是基于传值的,理解了这个,由这类问题造成的困惑都会迎刃而解啦。
// 遇到指针问题,可以通过画图来帮助分析问题
// 要了解更多关于 C 语言传参机制的更多内容,可以再百度一下。
// 希望可以帮到你

热心网友 时间:2023-04-27 12:21

typedef struct TreeNode {
    ElementType element;
    Node left, right;
} PTREE; // pointer of three type

void CreateTree(PTREE *Root);

int main(int argc, char *argv[])
{
    PTREE callBack;
    CreateTree(&callBack);// 创建
    
    callBack->element;// 访问
    callBack->left;
    callBack->right;
    
    return 0;   
}

// 其实最关键一点是如何CreateTree函数生成了一棵树,然后返回给调用的函数

// 其中一种方法和上面一样

PTREE callBack;
CreateTree(&callBack);

// 传递 callBack 指针,是为了CreateTree函数可以修改原调用函数中
// callBack 变量的值

// 当然也可以采用

PTREE CreateTree(void);

int main(void)
{
PTREE callBack = CreateTree();
}

// 这样直接利用函数返回值的办法

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com