|
关于函数指针使用方式 作者[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
|