如果T是空指针那么*T会出错,因为这是访问T指向的内存单元的意思。
应该是if(!T)意思是如果T不为空。其实这种写法很不标准,在不不同的平台上依然会出错,建议写成if(T!=NULL)
malloc(sizeof(BiTNode))的意思是分配一个BitNode结构一样大小的内存单元,malloc和new操作符相似。然后把这段内存单元转换成BitNode结构。其实就是创建一个BitNode的结构体(或对象)
这里的强制转换其实名不符其实,因为malloc仅仅是分配出内存单元,是对内存最底层的操作,根本无数据类型可言。加上一个所谓的强制转换只是告诉VC(编译器)这段内存是用作一个叫BitNode的结构体的。
参考资料:原创