乐闻世界logo
搜索文章和话题

How define an array of function pointers in C

5 个月前提问
4 个月前修改
浏览次数33

1个答案

1

在C语言中,定义函数指针数组是一种将多个函数地址存储在一个数组中的方法,这样可以根据需求动态地调用不同的函数。这通常用于实现类似策略模式的功能,或在需要根据条件执行不同函数的场景中非常有用。

定义函数指针数组的步骤:

  1. 确定函数的类型: 首先,需要确定数组中将要存储的函数的类型(即函数的返回类型和参数类型)。

  2. 定义函数指针类型: 可以先定义一个函数指针的类型,这样可以使代码更加清晰。

  3. 创建函数指针数组: 使用定义好的函数指针类型来创建数组。

示例:

假设我们有几个函数,它们的原型都是接收一个int参数并返回一个int结果。

c
int addTen(int num) { return num + 10; } int subTen(int num) { return num - 10; } int multiplyTen(int num) { return num * 10; }

步骤 1: 确定函数类型为 int (*)(int)

步骤 2: 定义函数指针类型:

c
typedef int (*funcPtr)(int);

步骤 3: 创建函数指针数组:

c
funcPtr operations[3];

接下来,我们可以将函数地址赋值给数组元素:

c
operations[0] = addTen; operations[1] = subTen; operations[2] = multiplyTen;

现在,operations 数组包含了三个函数的指针,我们可以根据需要调用这些函数:

c
int number = 20; int result1 = operations[0](number); // 调用 addTen int result2 = operations[1](number); // 调用 subTen int result3 = operations[2](number); // 调用 multiplyTen

通过这种方式,我们可以根据数组索引动态调用不同的函数,增加程序的灵活性和可扩展性。

2024年6月29日 12:07 回复

你的答案