这段话来自《C语言深度解剖》,我已经阅读过好几次,每当看到的时候都觉得搞笑,也很佩服源程序的作者,同样,也看的出该书作者的幽默与风趣。还应该看看最后一句话,呵呵!
如果函数的参数可以是任意类型指针,那么应声明其参数为void *。
典型的如内存操作函数memcpy和memset的函数原型分别为:
这样,任何类型的指针都可以传入memcpy和memset中,这也真实的体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不是论这片内存是什么类型。如果memcpy和memset的参数类型不是void *,而是char *,那才叫这的奇怪了!这样的memcpy和memset明显不是一个“纯粹的,脱离低级趣味的”函数!
下面的代码执行正确:
例子:memset接受任何类型的指针
例子:memcpy接受任意类型的指针
有趣的是memcpy和memset函数返回的也是void *类型,标准库函数的编写者都不是一般人。