Demo1:
#include<stdio.h>
#include<malloc.h>
struct Hello {
void (*p)(char* name);
};
void sayHello(char* name) {
printf("你好,%s!\n", name);
}
int main() {
struct Hello* h = (struct Hello*) malloc(sizeof(struct Hello));
h->p = sayHello;
h->p("鲍勃");
return 0;
}
Demo2:
#include<stdio.h>
#include<malloc.h>
typedef struct Hello {
void (*p)(char* name);
}Hello;
void sayHello(char* name) {
printf("你好,%s!\n", name);
}
int main() {
Hello h = {sayHello};
h.p = sayHello;
h.p("鲍勃");
return 0;
}
两个实例结果相同:

本文通过两个C语言实例,展示了如何使用结构体和函数指针实现动态调用。第一个实例手动定义结构体并分配内存,第二个实例则采用typedef简化结构体定义。两个实例均成功调用了sayHello函数,向鲍勃发送问候。
2360

被折叠的 条评论
为什么被折叠?



