上面的问题中为什么不在int main里定义BiTree *bt传入&bt
时间: 2023-12-06 08:40:22 浏览: 33
这是因为在C语言中,参数传递是值传递,即函数内部的形参是实参的一个副本,对形参的修改不会影响到实参的值。如果在`int main`函数中定义`BiTree *bt`并传入`&bt`,在函数内部修改`bt`的值是无效的,因为只是修改了副本的值,而没有修改实参的值。因此,在函数内部需要通过修改指针所指向的地址的值来改变实参的值,因此需要传入`&bt`的地址。
相关问题
上面的问题中为什么不在int main里定义BiTree *bt传入&bt,而是定义BiTree bt传入&bt
这是因为在C语言中,参数传递是通过值传递的方式进行的。当我们在函数内部对传入的参数进行修改时,实际上是对传入参数的拷贝进行修改,并不会对原始的参数产生影响。
如果我们在main函数中定义一个指向BiTree的指针变量,然后将其传入函数中,并在函数内部对其进行修改,那么实际上只是在对指针变量所指向的地址进行修改,而并没有修改指针变量本身。
因此,如果我们想要在函数内部对指针变量进行修改,就需要将指针变量的地址传入函数中,也就是使用指向指针变量的指针作为参数。而如果我们定义一个BiTree类型的变量,并将其地址传入函数中,那么函数内部对该变量的修改会直接影响到原始的变量。
CreateBiTree(BiTree*bt)在后面int main里调用时,为什么传入一级指针的地址
函数 `CreateBiTree(BiTree* bt)` 接收一个指向二叉树的指针 `bt`。如果想要在函数内部修改指向二叉树的指针 `bt`,那么需要传入指向指针 `bt` 的指针,即二级指针。因此,在调用 `CreateBiTree()` 函数时,需要传入 `&bt`,即指向指针 `bt` 的地址。这样在函数内部就可以通过一级指针的地址来修改指向二叉树的指针 `bt` 的值,使其指向创建好的二叉树的根节点。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)