函数指针说完了。我们接下来来看看函数指针数组。
多了俩字。数组。前面四个字还一样。那是不是就是有一个数组,用它来盛放函数指针。嗯,没错,就是这样。
有了刚才的基础,我直接给出例子。
-
void (*funcPointerArray[3])(double x);//函数指针数组
-
void (*funcPointer)(double x);//函数指针
两个放在一起对比,函数指针数组无非就像数组声明一样,在后面加了[]而已。仅此而已。
那它怎么用呢?
-
void f1(double x){}
-
void f2(double x){}
-
void f3(double x){}
来三个具体的函数,f1,f2,f3.
-
void (*funcPointerArray[3])(double x);
-
funcPointerArray[0]=f1;
-
funcPointerArray[1]=f2;
-
funcPointerArray[2]=f3;
-
funcPointerArray[0](“2.333333”);
-
funcPointerArray[1](“6.666666”);
简直就和普通的数组一模一样。没错,无非他存储的是函数指针而已。
最后,贴一个用函数指针数组的具体的应用的例子。
-
#include <stdio.h>
-
void addItem(char *name)
-
{
-
printf("Add %s successfully!\n",name);
-
}
-
void deleteItem(char *name)
-
{
-
printf("Delete %s successfully!\n", name);
-
}
-
void findItem(char *name)
-
{
-
printf("Find %s successfully!\n", name);
-
}
-
void updateItem(char *name)
-
{
-
printf("Update %s successfully!\n", name);
-
}
-
void main()
-
{
-
void(*funcPointerArray[4])(char *name);
-
funcPointerArray[0] = addItem;
-
funcPointerArray[1] = deleteItem;
-
funcPointerArray[2] = findItem;
-
funcPointerArray[3] = updateItem;
-
printf("Please enter a number(0-3) to continue:");
-
int num;
-
scanf_s("%d", &num,1);
-
printf("Please enter the name of the goods:");
-
char buf[128];
-
scanf_s("%s", &buf,128);
-
funcPointerArray[num](buf);
-
}
在上述的例子中,用函数指针数组代替了大量的switch case 直接通过传入的num值来调用不同的函数。