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;