指向函数的指针不会工作

时间:2015-04-14 17:18:25

标签: 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;
}

1 个答案:

答案 0 :(得分:8)

此行不正确:

p = strcmp();

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

  

错误:函数“int strcmp(const char*, const char*)

的参数太少

您只想分配 strcmp

p = strcmp;

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