目录
听说看到日落金山的人,接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧
一:函数指针
1.顾名思义
就如整数指针一样,整数指针是指向整数的指针,那函数指针就是指向函数的指针
2.实例说明
3.代码演示具体使用
二:函数指针数组
1.顾名思义
我们已经了解指针数组,指针数组先是数组,然后是用来存放指针的,那么函数指针数组也如此,首先是数组,是用来存放函数指针的数组
2.实例说明
形式就如:int (*p[10])(int ,int)
首先p与[10]结合成数组,再与*结合说明是指针,用来存放函数的地址,类型为int(*)(int ,int);
3.代码演示具体使用
如:代码实现一个加减乘除的计算器
#include <stdio.h>
int Add(int a, int b)//加法
{
return a + b;
}
int Sub(int a, int b)//减法
{
return a - b;
}
int Mul(int a, int b)//乘法
{
return a * b;
}
int Div(int a, int b)//除法
{
return a / b;
}
void menu()
{
printf("********* 0.exit *********\n");
printf("********* 1.jia *********\n");
printf("********* 2.jian *********\n");
printf("********* 3.cheng *********\n");
printf("********* 4.chu *********\n");
}
int main()
{
int a = 0, b = 0, ret = 0,input=1;
int (*p[5])(int, int) = { NULL,Add,Sub,Mul,Div };
// 0 1 2 3 4
do
{
menu();
printf("请选择:\n");
scanf("%d", &input);
if (input >= 1 && input <= 4)
{
printf("请输入两个操作数:");
scanf("%d%*c%d", &a, &b);
ret = (*p[input])(a, b);
printf("ret=%d\n", ret);
}
else if (input == 0) printf("退出计算器:\n");
else
{
printf("选择错误,请重新选择\n");
}
} while (input);
return 0;
}
三:指向函数指针数组的指针
1.顾名思义
2.实例说明
int (*p)(int ,int );//函数指针
int (*pf[5])(int ,int );//函数指针数组
int (*(*pt)[5])(int ,int )=&pf;//函数指针数组的地址,p就是t指向函数指针数组的指针
注:函数名是函数的地址,&函数名还是函数的地址
数组名是数组首元素的地址,&数组名是整个数组的地址