回 帖 发 新 帖 刷新版面

主题:一个指向函数的指针的编译问题

我在VS2010里建立了CPP文件如下,是一个简单的通过指向函数的指针调用函数的程序:
#include<stdio.h>
int max(int a,int b){
    int t;
    if(a>b)t=a;
    else t=b;
    return(t);
}
void main(){
    int max(int a ,int b);
    int(*pmax)();
    int x,y,z;
    pmax=max;
    scanf("%d%d",&x,&y);
    z=(*pmax)();
    printf("%d",z);
}
想请教大侠:为什么我编译时会出错?这段程序应该是没有问题的(完全照书打),但错误代码却是“error C2440: “=”: 无法从“int (__cdecl *)(int,int)”转换为“int (__cdecl *)(void)”
1>          该转换要求 reinterpret_cast、C 样式转换或函数类型转换 ”这是怎么回事,难道我把函数的地址传给pmax有问题?小弟实在搞不明白,还请高手赐教,谢谢!

回复列表 (共2个回复)

沙发

参数的个数都不对...
int(*pmax)(int,int);
z = pmax(x,y);

板凳


谢谢,问题已经解决了。看来真是书上印错了,以后还得多思考。

我来回复

您尚未登录,请登录后再回复。点此登录或注册