结构体中的函数指针
C语言是可以在结构体中定义函数的。
将函数当作一个指针变量来看待就容易理解了。
func.h
#ifndef FUNC_H
#define FUNC_H
typedef struct data {
char* name;
int (*func_2)(char* name);
}data;
int func_1(char* name);
#endif /* #ifndef FUNC_H */
func.c
#include <stdio.h>
int func_1(char* name){
printf("func_1 : %s\n", name);
return 0;
}
main.c
#include <stdlib.h>
#include "func.h"
void main(){
struct data* d;
d = (struct data*)malloc(sizeof(struct data*));
d->name = "ssh";
d->func_2 = func_1;
d->func_2(d->name);
}
编译运行:
$ gcc -o main main.c func.c
$ ./main
func_1 : ssh