K&R C函数指针

KAR*_*HAT 2 c pointers function-pointers

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

函数调用

qsort(
    (void **)lineptr,
    0,
    nlines-1,
    (int (*)(void *,void *)) (numeric ? numcmp : strcmp)
);
Run Code Online (Sandbox Code Playgroud)

我所理解的是,基于numeric地址strcmpnumcmp传递地址,地址类型被转换(int (*)(void *,void *))为函数所需.

功能定义

void qsort(void *v[],int left,int right, int (*comp)(void *, void *))
Run Code Online (Sandbox Code Playgroud)

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

unw*_*ind 5

恩,那就对了.

自从strcmp()获取const char *参数后需要强制转换,但它们可以安全地转换为void *.

如果你查看当前的手册页,qsort()你可以看到回调的参数应该是真的const void *,不仅仅是void *,这也是一个安全的转换(只要回调将指针视为指针const,当然).