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;
}

Last updated