数据结构 指针 链表 二叉树
发布网友
发布时间:2022-03-22 15:43
我来回答
共1个回答
热心网友
时间:2022-03-22 17:13
这个问题真的问得非常好,如果你能自己想明白原因的话,那就说明你对C和C++的理解比较深了。
要理解形参为什么要传BiTree,而不传BiTNode,首先要弄明白BiTree和BiTNode的区别。
1、BiTNode是个结构体,它占内存的大小由它的成员决定的,从题中看,肯定是大于4个字节的;
2、BiTree是个结构体指针,它占内存的大小是4个字节。
说到这里,能想明白为什么要传BiTree而不传BiTNode了吗?
就是因为BiTree的对象T只占4个字节的内存,比BiTNode的对象更节约内存空间,然而对于形参所起到的作用却是一样的。相当于花4元钱和花10元钱买的东西是一样的,你肯定是愿意选择花4元钱咯。这里的4元和10元只是个比喻,如果BiTNode的成员无限的多,那就不止是10元了,有可能是上万元,甚至更多,但是无论BiTNode占多少内存,BiTree始终只占4个字节。
其中奇妙的一点就是当形参是BiTree的时候,本质是个指针,当形参是BiTNode的时候,本质是个结构体,起的作用却是一样的。从这一点就可以得出,C和C++在函数形参上的最佳方式就是传对象的指针,而不是传对象本身。
不知道你是否理解到这其中的奥妙了,不懂请追问。