注册 登录
编程论坛 C++教室

指向函数指针问题

冷箭夜竹 发布于 2013-05-31 23:12, 571 次点击
#include<iostream.h>
//指向函数的指针实例

int ex(int x,int y,int (*fuc)())
{
    return (*fuc)(x,y);//为什么编译后会显示此处too many parameters?
}
void main()
{
    int func1(),func2(),func3(),func4();
    int (*fu[4])();
    int a=10,b=5,i;
    fu[0]=func1;
    fu[1]=func2;
    fu[2]=func3;
    fu[3]=func4;
    for( i=0;i<4;i++)
    {
        cout<<"func No."<<(i+1)<<"==>"<<ex(a,b,fu[i]);
    }
}

int func1(int x,int y)
{
    return (x+y);
}
int func2(int x,int y)
{
    return (x-y);
}
int func3(int x,int y)
{
    return (x*y);
}
int func4(int x,int y)
{
    return x/y;
}
5 回复
#2
yuccn2013-06-01 01:18
int ex(int x,int y,int (*fuc)(int x,int y))
{
    return fuc(x,y);//为什么编译后会显示此处too many parameters?
}

int func1(int x,int y)
{
    return (x+y);
}
int func2(int x,int y)
{
    return (x-y);
}
int func3(int x,int y)
{
    return (x*y);
}
int func4(int x,int y)
{
    return x/y;
}  
void main()
{
    // int func1(),func2(),func3(),func4();
    int (*fu[4])(int x,int y);
    int a=10,b=5,i;
    fu[0]=func1;
    fu[1]=func2;
    fu[2]=func3;
    fu[3]=func4;
    for( i=0;i<4;i++)
    {
        std::cout<<"func No."<<(i+1)<<"==>"<<ex(a,b,fu[i]);
    }
}
#3
lzj125302013-06-01 11:36
int ex(int x,int y,int (*fuc)(x,y))  //你的函数声明里面int (*func)(),没有声明参数,因此在下面使用时就应该没有参数。
{
    return (*fuc)(x,y);//将参数声明加入过去,就可以了 too many 就是超过了函数声明的参数数量。
}
void main()
{
    int func1(),func2(),func3(),func4();
    int (*fu[4])();
    int a=10,b=5,i;
    fu[0]=func1;
    fu[1]=func2;
    fu[2]=func3;
    fu[3]=func4;
    for( i=0;i<4;i++)
    {
        cout<<"func No."<<(i+1)<<"==>"<<ex(a,b,fu[i]);
    }
}

int func1(int x,int y)
{
    return (x+y);
}
int func2(int x,int y)
{
    return (x-y);
}
int func3(int x,int y)
{
    return (x*y);
}
int func4(int x,int y)
{
    return x/y;
}
#4
我有我梦2013-06-02 19:13
3楼主,讲的蛮详细啊!形式参数前面必须加基类型吗?才算申明吗、??
#5
我有我梦2013-06-02 19:14
共同努力,共同进步
#6
lzj125302013-06-05 08:13
声明参数都必须有参数类型+变量名
1