C++ 函数指针演示

C++ 函数指针演示,c++,pointers,function-pointers,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;

检查下面的代码

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;
}
intadd(inta,intb)
{
返回a+b;
}
void函数ptrdemo()
{
typedef int*(funcPtr)(int,int);
funcPtr-ptr;
ptr=add;//这是否正确?
int p=(*ptr)(2,3);

cout很可能你打算写的不是:

typedef int *(funcPtr) (int,int);
但是:

亚历克斯的回答是正确的。 但好的做法是

ptr = &add;
如果你是这样写的:

ptr = add;
编译器假定您需要 要存储函数add的地址。
所以最好不要让编译器去假设。

@sbi:我立即尝试了。但网站不允许我在5分钟内接受答案:)@AKN:对不起,我太不耐烦了。
:)
没有假设函数只能存储为指针为什么?这并不是说有任何歧义。你也避免了ar的隐式衰减吗射线指向指针,并使用
&数组[0]
而不是
数组
?您是否通过
(*func)(arg)
调用函数指针?
ptr = add;