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
地址strcmp
或numcmp
传递地址,地址类型被转换(int (*)(void *,void *))
为函数所需.
功能定义
void qsort(void *v[],int left,int right, int (*comp)(void *, void *))
Run Code Online (Sandbox Code Playgroud)
关于函数指针,我的解释是正确的吗?
恩,那就对了.
自从strcmp()
获取const char *
参数后需要强制转换,但它们可以安全地转换为void *
.
如果你查看当前的手册页,qsort()
你可以看到回调的参数应该是真的const void *
,不仅仅是void *
,这也是一个安全的转换(只要回调将指针视为指针const
,当然).