第286页 | C Primer Plus 中文版 | 阅读 ‧ 电子书库

同步阅读进度,多语言翻译,过滤屏幕蓝光,评论分享,更多完整功能,更好读书体验,试试 阅读 ‧ 电子书库

 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()的调用,可以使用以下调用形式:

其中,comp是比较函数名。应该如何编写这个函数呢?假设先根据姓,再根据名排序,可以这样编写该函数:

该函数使用strcmp()函数进行比较。strcmp()函数的可能返回值与比较函数的要求相匹配。注意:对某结构使用->运算符时,需要指向该结构的指针。

请支持我们,让我们可以支付服务器费用。
使用微信支付打赏


上一页 · 目录下一页


下载 · 书页 · 阅读 ‧ 电子书库