我正在尝试创建一个指向可以传递给 qsort()
函数的函数的函数变量,但我收到了“赋值类型不匹配” "当我尝试运行以下代码时出错。
int compareFunc (const void * a, const void * b)
{
//codes
}
int main(void) {
int *ptr; //create a function pointer variable that point to compareFunc
ptr = &compareFunc //Initialize function pointer
//codes
return 0;
}
有人可以告诉我我做错了什么并解释一下 const void *
到底是什么吗?
最佳答案
您的指针声明不是函数指针。它只是一个常规指针。应该改为声明一个函数指针,如下所示。
int (*fptr) (const void *a, const void *b);
fptr = compareFunc;
对于函数指针,您永远不必使用 & 运算符显式获取地址。
还有const void *
的意思是指针指向的对象/数据在那个函数中不会被修改。因此,每当您对指针指向的值执行写操作时,编译器都会引发错误。
关于c - 函数指针变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19828073/