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)
这行不正确:
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).