读书人

问一个函数指针的有关问题

发布时间: 2012-02-14 19:19:19 作者: rapoo

问一个函数指针的问题。
我对函数指针不很熟悉,在编程中也尽量避免使用他。

typedef void (*PFUN)( int);


void f1(int i)
{
cout < < "void f1 is called " < <endl;
}
void f2(int i)
{
cout < < "void f2 is called " < <endl;
}

int main()
{
PFUN pfunc, *ppfunc;


PFUN fun_arry[]=
{
f1,
f2,
};

pfunc = &f1;
pfunc(10);

ppfunc = fun_arry;
for(int i=0; i <2; i++)
{
ppfunc[i](1);
}

system( "pause ");
}

我的问题是 既然 pfunc = &f1;
那么ppfunc[0] 就是 f1;相当于 ppfunc[0] = f1;
为什么不一样?

typedef void (*PFUN)( int); 为函数指针声明类型定义
则 PFUN pfunc;//pfunc 是一个函数指针;
void (*p)( int) ;
// p 也是函数指针;
p 和 pfunc 类型不一样吗?
为什么会这样子: p = f1;
pfunc = &f1;



[解决办法]
void (*p)( int) ;

p = f1;
p = &f1;
====
两种写法不同. 作用是一样的.

通过函数指针p调用时 也可以写
p(3);
(*p)(3);
这两种不同的写法也是一个作用. 写成(**********p)(3) 也是和 p(3) 作用一样.

读书人网 >C++

热点推荐