已读83%
预计阅读本页时间:-
预计阅读本页时间:-
C和C++中的void*
C和C++对待Void类型的指针是不同的。在两种语言中,你都可以把一个指向任意类型的指针赋给类型void*。例如,程序清单16.15中的函数调用,把double*类型赋给一个double*类型的指针。但是,在把一个void*指针赋给一个指针或另一个类型的时候,C++需要一次强制类型转换。而C并没有这个需要。例如,程序清单16.15中的mycomp()函数对void*指针p1强制转型。
在C中,这种强制类型转换是可选的,在C++中则是必须的。因为强制类型转换在两种语言中都有作用,因此,使用它比较有意义。如果你把程序转换到C++中,你不必留意要改变这一部分。
考虑另外一个比较函数的示例。假设有这些声明:
如何调用qsort()呢?模仿程序清单16.15中对qsort()的调用,可以使用以下调用形式:
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
其中,comp是比较函数名。应该如何编写这个函数呢?假设先根据姓,再根据名排序,可以这样编写该函数:
该函数使用strcmp()函数进行比较。strcmp()函数的可能返回值与比较函数的要求相匹配。注意:对某结构使用->运算符时,需要指向该结构的指针。