展开全部
优点是:
(1)同一函数指针变量可以保存不同的函数名,即可以实现不同函数的调用,这实际上是"多态"的内容;
(2)通过函数指针可以很好地完成"菜单"程序设计技术,MFC中的消息就是靠"函数指针"来实现调用的
(3)函数指针可以作为形式参数,实现在一个函数中用通过函数指针调用其它函数的目的.
总之,"函数指针"属于C语言的高级编程专题.
举一例:
#include <stdio.h>
int ADD(int x,int y);
int SUBS(int x,int y);
int MULT(int x,int y);
int DIVI(int x,int y);
typedef int (*FUN)(int,int);
FUN f[4]={ADD,SUBS,MULT,DIVI};
int ADD(int x,int y){return x+y;}
int SUBS(int x,int y){return x-y;}
int MULT(int x,int y){return x*y;}
int DIVI(int x,int y){return y?x/y:-1;}
main( )
{
int a=10,b=20;
int i;
for(i=0;i<4;i++)
printf("%10d\n",f[i](a,b));
}
请注意,f[i](a,b). 虽然形式是一样的,但是根据不同的i执行了不同的函数.
(1)同一函数指针变量可以保存不同的函数名,即可以实现不同函数的调用,这实际上是"多态"的内容;
(2)通过函数指针可以很好地完成"菜单"程序设计技术,MFC中的消息就是靠"函数指针"来实现调用的
(3)函数指针可以作为形式参数,实现在一个函数中用通过函数指针调用其它函数的目的.
总之,"函数指针"属于C语言的高级编程专题.
举一例:
#include <stdio.h>
int ADD(int x,int y);
int SUBS(int x,int y);
int MULT(int x,int y);
int DIVI(int x,int y);
typedef int (*FUN)(int,int);
FUN f[4]={ADD,SUBS,MULT,DIVI};
int ADD(int x,int y){return x+y;}
int SUBS(int x,int y){return x-y;}
int MULT(int x,int y){return x*y;}
int DIVI(int x,int y){return y?x/y:-1;}
main( )
{
int a=10,b=20;
int i;
for(i=0;i<4;i++)
printf("%10d\n",f[i](a,b));
}
请注意,f[i](a,b). 虽然形式是一样的,但是根据不同的i执行了不同的函数.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询