目录
前言
函数指针数组的定义
函数指针数组的使用
前言
数组是存放一组相同类型数据的存储空间
关于指针数组的知识请见:C语言 ——— 指针数组 & 指针数组模拟二维整型数组-CSDN博客
那么要将多个函数的地址存储到数组中,这个数组该如何定义呢?
函数指针数组的定义
把多个函数的地址存储到数组中,那么这个数组就叫函数指针数组
创建4个函数,实现整型类型的加减乘除:
int Add(int x, int y) // 加
{return x + y;
}
int Sub(int x, int y) // 减
{return x - y;
}
int Mul(int x, int y) // 乘
{return x * y;
}
int Div(int x, int y) // 除
{return x + y;
}
可以看出,这4个函数除了 函数名 和 函数内的运算符吧不同以外,参数和返回值都是相同的,那么即可定义一个函数指针数组,将这 4个函数存储到数组中
函数指针数组的定义:
int (*pArr[4])(int, int) = { Add, Sub, Mul, Div };
代码解析:
pArr 先和 [4] 结合,代表 pArr是数组,去掉 pArr[4],剩下的就是数组的类型
int (*) (int, int) 就为 pArr[4]数组 的类型,表示的是 pArr[4]数组 的类型为:返回值是int,类型是(*),参数是(int, int)的函数
函数指针数组的使用
代码演示:
int ret = pArr[0](10, 5);printf("10 + 5 = %d\n", ret);ret = pArr[1](10, 5);printf("10 - 5 = %d\n", ret);ret = pArr[2](10, 5);printf("10 * 5 = %d\n", ret);ret = pArr[3](10, 5);printf("10 / 5 = %d\n", ret);
代码验证: