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是吗?天哪,我太笨了,对不起,伙计们,问题是#包括并排在哪里。。。。。。。。。。。。比如包括。