K& R C函数指针

时间:2014-01-21 08:55:56

标签: c pointers function-pointers

我正在阅读K& R书(第一次)我遇到了一个使用指针的函数。

函数调用

qsort(
    (void **)lineptr,
    0,
    nlines-1,
    (int (*)(void *,void *)) (numeric ? numcmp : strcmp)
);

我理解的是,基于numericstrcmpnumcmp的地址被传递,地址类型被转换为(int (*)(void *,void *)),因为函数需要

功能定义

void qsort(void *v[],int left,int right, int (*comp)(void *, void *))

关于函数指针,我的解释是否正确?

1 个答案:

答案 0 :(得分:5)

是的,没错。

由于strcmp()需要const char *个参数,因此需要强制转换,但转换为void *是安全的。

如果查看the current manual page for qsort(),您可以看到回调的参数应该是const void *,而不仅仅是void *,但这也是一个安全的转换(只要回调处理指针当然是指向const的指针。