为什么不定义BiTree *bt传入&bt
时间: 2023-08-02 10:07:17 浏览: 36
在函数参数中定义BiTree *bt传入&bt是可以的,这样可以在函数内部直接修改传入的指针所指向的二叉树结构。但是,这样做可能会导致一些问题。
首先,如果不小心修改了传入的指针,可能会导致程序出现难以调试的错误。其次,如果在函数内部分配了新的内存空间,使用传入的指针可能会导致内存泄漏或者访问非法内存等问题。因此,最好还是在函数内部分配新的内存空间,并将新分配的指针作为返回值返回,这样可以更加安全、灵活地操作二叉树结构。
相关问题
上面的问题中为什么不在int main里定义BiTree *bt传入&bt
这是因为在C语言中,参数传递是值传递,即函数内部的形参是实参的一个副本,对形参的修改不会影响到实参的值。如果在`int main`函数中定义`BiTree *bt`并传入`&bt`,在函数内部修改`bt`的值是无效的,因为只是修改了副本的值,而没有修改实参的值。因此,在函数内部需要通过修改指针所指向的地址的值来改变实参的值,因此需要传入`&bt`的地址。
上面的问题中为什么不在int main里定义BiTree *bt传入&bt,而是定义BiTree bt传入&bt
这是因为在C语言中,参数传递是通过值传递的方式进行的。当我们在函数内部对传入的参数进行修改时,实际上是对传入参数的拷贝进行修改,并不会对原始的参数产生影响。
如果我们在main函数中定义一个指向BiTree的指针变量,然后将其传入函数中,并在函数内部对其进行修改,那么实际上只是在对指针变量所指向的地址进行修改,而并没有修改指针变量本身。
因此,如果我们想要在函数内部对指针变量进行修改,就需要将指针变量的地址传入函数中,也就是使用指向指针变量的指针作为参数。而如果我们定义一个BiTree类型的变量,并将其地址传入函数中,那么函数内部对该变量的修改会直接影响到原始的变量。