#include <stdio.h>#include <malloc.h>typedef struct Value //只有结构体变量才分配地址,而结构体的定义是不分配空间的{int dat;char str;}Value;typedef struct Fun{//只有结构体变量才分配地址,而结构体的定义是不分配空间的int a,b;int m,n;void(*print)(void);//函数指针,是一个指针变量,指向某个函数的地址,int (*add)(int a,int b); //即可实现该函数的功能.int (*returnVal)(void);void(*test)(int m,int n);}Fun;/*****************************************************/void print(void){printf("Print success!\n");}int add(int a,int b){return a+b;}int returnVal(void){return 1024;}void TEST(int j,int k){printf("TEST():%d\n",j+k);}/****初始化一个结构体变量****/Fun f = {.a = 1,.b = 5,.m = 10,.print = print,.add = add,.returnVal = returnVal,.test = TEST//将结构体test函数地址,指向TEST真正存在的函数};/*****************************/int main(void){Value *va = (Value*)malloc(sizeof(Value));//初始化一个Value结构体的变量Fun *t = (Fun*)malloc(sizeof(Fun));(*t).n = 13;//等价于t->n = 13;va->dat = 12;printf("va->dat:%d\n",va->dat);printf("t->n:%d\n",t->n);print();printf("%d\n",f.add(f.a,f.b));printf("%d\n",f.returnVal());f.test(f.m,18);//传入参数既可以是结构体变量f里的值,也可以外部输入TEST(50,100); return 0;}
300字范文,内容丰富有趣,生活中的好帮手!