关于函数指针使用方式 作者[mxic]©
--- 摘自《单片机C语言应用论坛》---

问:
关于函数指针使用方式请教:

         void gainset (unsigned char (*P)() )
         {
             unsigned char a,b;
             (*p)(a,b);
         }
         
         void dspset(unsigned char x,unsigned char y ){
            ..............
            .............
         }
         
         main (void){
             gainset(dsp);
         }         

回答:   
void gainset (unsigned char (*P)() )
         {
             unsigned char a,b;
             (*p)(a,b);
         }

1。那个p怎么一个大写一个小写?本意是同一个吗?
2。如果是同一个,你的意思是用函数指针p做为函数gainset的参数,那么参数一定要匹配。你的指针p指向的函数是带参数的还是
不带参数的?你这里矛盾了:
    这里(*p)(a,b)是带参数a,b的。与unsigned char  (*P)() 这个原型不匹配。

3。如果你在gainset里只是调用另一个函数dsp,那么根本上你对函数指针的用法有点问题。这样用:
unsigned char (*p)();
unsigned char dsp(void)
{
......
}
void main(void)
{
......
    p = dsp;
    (*p)();        //这样就调用函数dsp了
......
}

这里如果你的函数指针指向的函数是带两个uchar参数的,则要声明为:
unsigned char (*P)(unsigned char a,unsigned char b); 
Copyright© 2001-2003, 晓奇工作室 E-Mail:info*xiao-qi.com