函数指针数组和函数指针数组的指针
程序员文章站
2024-03-26 09:44:53
...
函数指针数组
回顾一下:
char *(*pf)(char *p);//函数指针
上面代码表示定义的是一个函数指针pf,pf是一个指针变量,那么,pf就可以存储在以个数组里面。如下:
char *(*pf[3])(char *p);//函数指针数组
上述代码定义的是一个函数指针数组,它是 一个数组,数组名为pf,数组内存储了3个指向函数的指针。这些指针指向一些返回值类型为指向字符的指针,参数为一个指向字符的指针的函数。。。最重要的是:它是数组!!!
有关函数指针数组的应用,我们需要掌握转移表,下面是一个实现计算器功能的代码:
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;
}
int main()
{
int x;
int y;
int input = 1;
int ret = 0;
int(*p[5])(int x, int y) = { 0, add, sub, mul, div };//函数指针数组的初始化
while (input)
{
printf("**************************");
printf(" 1:add 2:sub \n");
printf(" 3:mul 4:div \n");
printf("**************************");
printf("请选择:\n");
scanf("%d",&input);
if (input < 4 && input >1)
{
printf("输入操作数:\n");
scanf("%d %d", &x, &y);
ret = (*p[input])(x, y);
}
else
printf("输入有误\n");
printf("ret = %d\n", ret);
}
system("pause");
函数指针数组的指针
相信你已经明白,它是一个指针咯!
这个指针指向一个数组,这个数组里面存储的都是指向函数的指针,例如:
char *(*(*pf[3])(char *p));//函数指针数组的指针
注意:此处pf是一个指针变量,这个指针指向一个包含了3个元素的数组,数组里面存储的是指向函数的指针,指针指向一些返回值类型为指向字符的指针,参数为一个指向字符的指针的函数。更重要的是:它是指针哦!用法类似。
关于指针和数组有许多练习题,都需要我们一一掌握,只有掌握指针和数组的用法我们才能在写代码的时候得心应手,如有兴趣,点击链接:
h v从哈哈
上一篇: 声明类以及类的实例化
下一篇: 模板不能分离编译及相关问题
推荐阅读