C 語言中沒有類和對象的概念,可是能夠經過 struct 結構體來實現一樣的效果。相似 Golang 中的 struct,把 C 函數指針當作 struct 的成員,就能夠爲 struct 結構體對象添加方法:函數
#include <stdio.h> typedef struct People { int age; void (*sing)(); int (*getAge)(struct People *p); void (*setAge)(struct People *p, int); } People; void sing() { printf("singing\n"); } void setAge(People *p, int a) { p->age = a; } int getAge(People *p) { return p->age; } int main(void) { People p; p.age = 18; // 函數指針初始化 p.sing = sing; p.getAge = getAge; p.setAge = setAge; // 函數調用,能夠看作是結構體的成員方法 p.sing(); p.setAge(&p, 30); printf("getAge: %d\n", p.getAge(&p)); return 0; }