【发布时间】:2022-01-10 12:06:35
【问题描述】:
假设我在 C 中有一个函数,它接受两个 void 指针作为输入,*a 和 *b 说,以及一个本身接受两个 void 指针的函数(作为指针)。例如,函数可能有一个类似
的声明arbitrary_type f(void *a, void *b,
arbitrary_type (*g)(void *, void *))
{
...
}
我们还假设该函数仅通过函数 'g' 起作用(可以将其视为一种 getter 或 setter,用于 'a' 和 b' 所指向的变量。)
从技术上讲,该函数是否能够对type_a *a、type_b *b、rtype (\*g)(type_a *, type_b *) 形式的指针的任意三元组(a, b, g) 进行操作而不会引入错误?
【问题讨论】:
-
你刚刚重新发明了
qsort()。所以是的,它有效。 -
关于“该函数在技术上是否能够作用于任意三元组”:不,不完全是。传递指向限定类型的指针,例如
const char或volatile unsigned,会引入一些问题。
标签: c function-pointers void-pointers