C++函数指针的调用

//5.cpp:Definestheentrypointfortheconsoleapplication.//注意其中int(*cmp)(constchar*,const... // 5.cpp : Defines the entry point for the console application.

//注意其中int (*cmp)(const char *,const char *)指针函数调用形式
#include "stdafx.h"
#include <iostream.h>
#include <string.h>
#include <stdio.h>

void fi(char *p1,char *p2,int (*cmp)(const char *,const char *));
void cp(char *p1,char *p2,int (*pc)(const char *,const char *));
void main()
{
char p3[80],p4[80];
gets(p3);
gets(p4);
int (*p)(const char *,const char *);
int (*q)(const char *,const char *);
p=strcmp;
q=strcat;
fi(p3,p4,p);
cp(p3,p4,q);
}
void fi(char *p1,char *p2,int (*cmp)(const char *,const char *))
{
cout<<"Testing if the two sentences are eaqual: ";
if(!cmp(p1,p2))
cout<<"eaqual"<<endl;
else
cout<<"unequal"<<endl;
}
void cp(char *p1,char *p2,int (*pc)(const char *,const char *))
{
pc(p1,p2);
cout<<p1<<endl;
}
错误信息:
--------------------Configuration: 5 - Win32 Debug--------------------
Compiling...
5.cpp
D:\Work\5\5.cpp(19) : error C2440: '=' : cannot convert from 'char *(__cdecl *)(char *,const char *)' to 'int (__cdecl *)(const char *,const char *)'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Error executing cl.exe.

5.exe - 1 error(s), 0 warning(s)
to:pengyifan0803
那么strcmp的原型是?为什么在这里是正确的?我之前也做了修改:将int ->char,但是还是不行。
能否帮我修改下?感激不尽!
展开
 我来答
百度网友1b344793b
2006-07-29 · TA获得超过521个赞
知道小有建树答主
回答量:314
采纳率:50%
帮助的人:0
展开全部
strcat的原型为char * strcat (char *s, const char *ct)
而您的声明q为int (*q)(const char *,const char *);

所以报错:不能将char *(__cdecl *)(char *,const char *)的函数转换为
'int (__cdecl *)(const char *,const char *)
忘至白葬不情必0T
2006-07-29 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
int strcmp( const char *string1, const char *string2 );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式