一个很有意思的指针本身的地址的问题。
问题的起因:数据结构课上老师给了一个用完全前序遍历生成树的递归程序,如下所示
其中,BiTreeNode就是普通的二叉树节点结构,你可以看出上述程序的错误吗?
其实,我起初研究了很久也没有发现问题,转而换了另一种方法,过了一阵子同学问起,才好好研究了一番终于弄明白了。
其实,它的问题就是一个,指针自身的地址问题。
看上图所示的程序,它的形参是个指针,如果我们传入一个指针做实参,然后对指针所指的那片内存做操作,那么就一点问题都没有了。但是如果我们是对指针,也就是说对这个数据类型的对象做操作,那么问题就出来了。上图就是这种情况,其实我们完全可以给指针这个数据类型取个姓名字叫A,那么它就是很明显的复制传值了,解决这个问题的方法,就是给这个指针再取地址,方法如下:
记得,实参得是指针的地址才可以。