C语言函数指针的几种用法
Free_Bird主要参考了:/space.php?uid=9950859&do=blog&id=98594
写的很好;在此感谢高手们的无私;
以下是我编写的一段程序,希望能帮到需要的xdjm;
程序如下:
#include
#include
/*--指针的应用都在主函数里,前面都是准备工作--*/
/*----------------------------------------------------------*/版权文档,请勿用做商业用途
/*------简单应用指针的前期准备------*/
/*----------------------------------------------------------*/版权文档,请勿用做商业用途
//声明并定义 一个变量、一个数组 和 一个函数
double R = 0;
unsigned char Temp[10] = {9,8,7,6,5,4,3,2,1,0};
void delay_ms(unsigned int n)
{
unsigned int i,j;
for(i = 0; i< n ; i++)
{
for(j = 0; j < 2280; j++);
}
}
//声明一个指向无符号字符型的指针 和 一个函数指针
unsigned char *pT;
void (*pF)(unsigned int n);
/*----------------------------------------------------------*/版权文档,请勿用做商业用途
/*------应用函数指针的前期准备------*/
/*----------------------------------------------------------*/版权文档,请勿用做商业用途
/*------相关函数的声明和定义------*/
int add(int a, int b){int sum; sum = a + b; return sum;}版权文档,请勿用做商业用途
int sub(int a, int b){int difference; difference = a - b; return difference;}版权文档,请勿用做商业用途
int mul(int a, int b){int product; product = a * b; return product;}版权文档,请勿用做商业用途
int div(int a, int b){int division; division = a / b; return division;}版权文档,请勿用做商业用途
int UnKnown(int a,int b){return 0;}
/*------函数指针的第一种用法:作为其他函数的参数------*/
//关于下面这个函数的理解:首先分析这个函数的参数,前两个参数是整形,
// 第三个参数是一个函数指针,既然是函数指针,
// 那么给第三个参数赋值时,
// 就应该是函数的入口地址,即 函数名;
// 调用时:calculator(5,9,mul);
//
//函数的声明和定义
double calculator1(int x, int y, int (*pfunc)(int, int)) 版权文档,请勿用做商业用途
{
double result;
result = (*pfunc)(x, y);
return result;
}
/*------函数指针的第二种用法:作为函数的返回值------*/
//直接声明和定义(思路不清晰,不推荐)
int (*GetOperation1(unsigned char c))(int a,int b)
{
switch (c)
{
case 'a':
return add;
case 's':
return sub;
case 'm':
return mul;
case 'd':
return div;
default:
return UnKnown;
}
}
//标准做法(思路清晰,推荐)
//将PF转意声明成一个指向int add(int a, int b)型函数的函数指针类型
typedef int (*PF