C 语言结构体数组回调函数实现动态执行不同函数
假设结构体的定义如下:
typedef struct {
char *str;
void (*func)(void);
} Data;
void func1(void) {
printf('Function 1\n');
}
void func2(void) {
printf('Function 2\n');
}
void func3(void) {
printf('Function 3\n');
}
int main() {
Data arr[3] = {
{"string1", func1},
{"string2", func2},
{"string3", func3}
};
for (int i = 0; i < 3; i++) {
if (strcmp(arr[i].str, "string1") == 0) {
arr[i].func();
}
else if (strcmp(arr[i].str, "string2") == 0) {
arr[i].func();
}
else if (strcmp(arr[i].str, "string3") == 0) {
arr[i].func();
}
}
return 0;
}
这段代码定义了一个包含三个元素的结构体数组,每个元素包含一个字符串和一个函数指针。然后循环遍历数组,根据字符串的内容,执行对应的函数。在这个例子中,字符串分别是'string1'、'string2'、'string3',对应的函数分别是func1、func2、func3。当字符串是'string1'时,会调用func1函数;当字符串是'string2'时,会调用func2函数;当字符串是'string3'时,会调用func3函数。
原文地址: https://www.cveoy.top/t/topic/oWeu 著作权归作者所有。请勿转载和采集!