我正在尝试学习如何使用指针正常运行。我应该在函数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;
}
答案 0 :(得分:8)
此行不正确:
p = strcmp();
此处您使用零参数调用 strcmp
,这是无效的。你应该得到一个非常明确的编译器错误。例如,gcc给了我:
错误:函数“
的参数太少int strcmp(const char*, const char*)
”
您只想分配 strcmp
:
p = strcmp;
此外,您不需要取消引用功能指针来调用它们,因此!(*cmp)(a,b)
可以简化为!cmp(a,b)
。