蘋果小豬研究室
Ask or search…
K

Function pointer in C

Function pointer is useful to do abstraction; it is a general implementation of immediate interface; it is also used to implement the plug-in interface.
Here is a example:
#include <stdio.h>
#include <strings.h>
typedef struct _dev{
char name[16];
void (*open)();
} dev;
double init (dev *dev)
{
bzero(dev->name, sizeof(dev->name));
return 0.0;
}
int dev_a_open(void)
{
printf("device a open\n");
return 0;
}
int dev_b_open(void)
{
printf("device b open\n");
return 0;
}
int main(int argc, char *argv) {
dev dev_a, dev_b, *dev;
init(&dev_a);
init(&dev_b);
dev = &dev_a;
dev->open = dev_a_open;
dev->open();
dev = &dev_b;
dev->open = dev_b_open;
dev->open();
return 0;
}