问:
关于函数指针使用方式请教:
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);
|