300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C语言结构体函数指针

C语言结构体函数指针

时间:2024-05-19 14:23:59

相关推荐

C语言结构体函数指针

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。