C++中函数指针数组的使用
考试编辑器整理C++编程知识。
在开发一个软件的过程中,我遇到了这样一个问题。前一个模块发给我二进制数据,输入参数是char* buffer和int length。Buffer是数据的第一个地址,length表示这批数据的长度。数据的特点是:长度不定,类型不定。第一个字节(buffer[0])标识数据的类型,总共有256(28)种可能性。
我的任务是处理每一种可能的数据类型,我的模块包含几个函数,每个函数都需要类似的处理。根据通常的做法,将编写以下代码:
void my function(char * buffer,int length)
{ _ _ int 8 nstream type = buffer[0];
开关(nStreamType)
{案例0:
函数1();
打破;
案例1:
......
案例255:
函数255();
打破;
}
如果我这样写,我的每个函数都要做那么多判断,写出来的代码一定很长,而且每次处理都要做很多判断才能找到正确的处理函数,代码的执行效率不高。针对以上问题,我想到了用函数指针数组来解决这个问题。
指针的概念在谭浩强老师的经典课程《C语言程序设计》中已经提到过,但大多数情况下我们无法使用它,忽略了它的存在。函数名实际上是指向函数入口地址的指针,但不同于int*和double*等普通指针。参见下面的例子来理解函数指针的概念:
1 int function(int x,int y);
2空干管(空)
{
3 int (*fun) ( int x,int y);
4 int a = 10,b = 20
5函数(a,b);
6乐趣=功能;
7 (*fun)( a,b);
8 ……
}
0条评论