C++ 指向函数的指针不起作用

C++ 指向函数的指针不起作用,c++,c,pointers,function-pointers,C++,C,Pointers,Function Pointers,我正在努力学习如何正确使用函数指针。我本应该在函数check中创建一个指向函数strcmp的指针,但程序会立即打开和关闭。据我所知,函数指针在我的代码returnType(*pointer)(parameters))上是正确的那么出了什么问题?提前谢谢 void check(char *a,char *b,int (*cmp)(const char*,const char*)) { printf("Testing equality\n"); if(!(*cmp)(a,b)) pr

我正在努力学习如何正确使用函数指针。我本应该在函数
check
中创建一个指向函数
strcmp
的指针,但程序会立即打开和关闭。据我所知,函数指针在我的代码
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;
}

这行不正确:

p = strcmp();
在这里,您使用零参数调用
strcmp
,这是无效的。关于这一点,您应该知道一个非常清楚的编译器错误。例如,gcc给了我:

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

您只想分配
strcmp

p = strcmp;

而且,调用函数指针不需要取消引用,所以
!(*cmp)(a,b)
可以简化为
!cmp(a,b)

编译器没有就此警告您吗
p=strcmp()?哪个编译器成功编译了这个
p=strcmp()?怎么做?你是不是自己添加了一个strcmp的声明来编译它?(你可以说
check(s1,s2,strcmp)
)这本书的教学方式应该是p=strcmp;没有();错误是:“strcmp undeclared”@DanielBezerradeMenezes是吗?天哪,我太笨了,对不起,伙计们,问题是#包括并排在哪里。。。。。。。。。。。。比如包括。