首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-14 
问一个函数指针的问题。我对函数指针不很熟悉,在编程中也尽量避免使用他。typedefvoid(*PFUN)(int)voidf1(i

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

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) 作用一样.

热点排行