贡献者: addis
C 语言的多态可以通过函数指针实现。什么是多态?简单来说就是根据运行时的不同类型数据来决定调用什么函数。
例如从概念上,我们需要一个数组,但每个元素都可能是不同的类型,且这些类型只有在运行时知道。那么如何写一个函数,对数组的每个元素调用不同的函数呢?且这些函数需要由用户提供。我们可以用 void *
来储存元素数据,再用 int
数组动态表示每个元素的类型。
C 语言中大量使用看似危险的 void *
来提供一般算法,例如标准库的快排 void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
。该算法不需要知道元素类型,比较元素的函数由用户自行提供。