功能指针演示

时间:2010-04-07 07:00:58

标签: c++ pointers function-pointers

检查以下代码

int add(int a, int b)
{
    return a + b;
}

void functionptrdemo()
{
    typedef int *(funcPtr) (int,int);
    funcPtr ptr;
    ptr = add; //IS THIS CORRECT?
    int p = (*ptr)(2,3);
    cout<<"Addition value is "<<p<<endl;
}

在我尝试使用相同的函数签名为函数ptr分配函数的地方,它显示编译错误为错误C2659:'=':函数作为左操作数

2 个答案:

答案 0 :(得分:10)

你打算写的东西很可能不是:

typedef int *(funcPtr) (int,int);

但:

typedef int (*funcPtr) (int,int);

答案 1 :(得分:2)

Alex回答是正确的。 但好的做法将是

ptr = &add;

如果你这样写如下:

ptr = add;

它是假定您想要的编译器 存储函数add的地址。 所以最好不要让编译器假设。