问一个函数指针的问题。
我对函数指针不很熟悉,在编程中也尽量避免使用他。
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) 作用一样.