以下是我无法理解如何完成的几个函数声明。我扫描了网络以了解 void 指针是什么,并且我知道它必须转换为有用的东西(因为它只指向某个内存块),但我不知道这如何帮助完成这些声明。
/* type of comparison function that specifies a unique order.
Returns 1 if pointer1 should come before,
0 if equal to, or -1 if after pointer2. */
typedef int (*compare_function) (const void* pointer1, const void* pointer2);
/* get the data object */
void* get_obj(const void* item_pointer);
像这样的功能还有很多,但我认为如果我了解如何执行这两个功能,我应该处于良好状态。例如,对于第二个函数,我们如何将 item_pointer 转换为应该返回的任何适当的值?
void *
通常意味着您只对数据的地址感兴趣,而不管其类型如何,原因如下:
数据的内部表示void *
指向是隐藏的,您不应该直接访问数据,信息隐藏,你的函数 2 就是这种情况的一个例子。
调用链中的某些函数知道该类型,例如 withqsort
以及大多数将参数传递给其他函数的函数。
类型不是必需的,因为指针指向的数据将被处理为不同的类型,就像memcpy
它可以将数据处理为字节,unsigned char *
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)