指向函数的指针不会工作

0 c c++ pointers function-pointers

我正在尝试学习如何使用指针正常运行.我应该在函数strcmp内部创建一个指向函数的指针check,但程序会立即打开和关闭.据我所知,函数指针在我的代码上是正确的 returnType (*pointer)(parameters)); 那么出了什么问题?提前致谢.

void check(char *a,char *b,int (*cmp)(const char*,const char*))
{
    printf("Testing equality\n");
    if(!(*cmp)(a,b)) printf("equals");
    else printf("different");
}

int main(void)
{
    char s1[80] = "daniel" ,s2[80] = "daniel";
    int (*p)(const char*,const char*);
    p = strcmp();


    check(s1,s2,p);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*rry 8

这行不正确:

p = strcmp();
Run Code Online (Sandbox Code Playgroud)

在这里你调用 strcmp零参数,这是无效的.你应该得到一个非常明确的编译器错误.例如,gcc给了我:

错误:函数的参数太少' int strcmp(const char*, const char*)'

你想要分配 strcmp:

p = strcmp;
Run Code Online (Sandbox Code Playgroud)

此外,您不需要取消引用函数指针来调用它们,因此!(*cmp)(a,b)可以简化为!cmp(a,b).