用函数指针数组的方式,写一个参数A-Z,并执行动作的程序
时间: 2023-05-24 22:03:45 浏览: 103
这是一个基于C语言的示例程序,用于演示如何使用函数指针数组对不同的字符参数执行不同的动作。
```c
#include <stdio.h>
// 声明函数指针类型
typedef void (*ActionFunc)(void);
// 定义动作函数
void actionA(void) {
printf("Action A\n");
}
void actionB(void) {
printf("Action B\n");
}
void actionC(void) {
printf("Action C\n");
}
// 定义函数指针数组
ActionFunc actionArr[26] = {
NULL, // A
&actionB, // B
&actionC, // C
NULL, // D
NULL, // E
// ...
};
int main(void) {
char ch = 'B'; // 假设要执行动作B
int index = ch - 'A'; // 计算在数组中的下标
if (index >= 0 && index < 26 && actionArr[index]) {
// 如果下标合法,且对应函数指针不为空
actionArr[index](); // 执行对应的动作函数
}
return 0;
}
```
在本例中,我们首先定义了三个动作函数`actionA`、`actionB`、`actionC`,然后定义了一个函数指针类型`ActionFunc`,用于指向这些动作函数。接下来,我们定义了一个函数指针数组`actionArr`,其中每个元素都是指向动作函数的函数指针。数组的下标对应于字符参数的ASCII码值减去字符'A'的ASCII码值,即'A'对应0,'B'对应1,以此类推。如果数组中某个元素为空,表示对应的动作不存在。
在主函数中,我们假设要执行动作B,首先计算出在数组中的下标,然后如果下标合法,且对应函数指针不为空,就调用函数指针执行对应的动作函数。在本例中,程序将执行函数`actionB`,输出字符串"Action B"。
通过这种方式,我们可以使用函数指针数组实现基于单个字符参数的动作执行。我们可以在数组中定义任意数量的动作函数,并将其与不同的字符参数关联起来,从而实现更加复杂的操作。
阅读全文