概述
在学习驱动程序的时候,代码中常常看到各种结构体,结构体中也有各种函数指针。在这里复习一下结构体,以及指针函数。
结构体一般有以下几种形式的用法:
1、先定义结构类型再定义变量
如:
struct xx { 成员变量列表;…… …… }; struct xx *指针变量名; 变量初始化:struct xx 变量名={初值1,初值2,……,初值n};
2、在定义结构类型的同时也定义变量
如:
struct xx { 成员变量列表;…… …… } *指针变量名;
3、直接定义变量,用无名结构体直接定义变量只能一次
struct { 成员变量列表;… }*指针变量名;
其中“指针变量名”为结构体指针变量的名称。形式1是先定义结构体,然后再定义此类型的结构体指针变量;形式2和形式3是在定义结构体的同时定义此类型的结构体指针变量。
附上一个小程序加深理解:
#include<stdio.h> #include<stdlib.h> struct test_fun //该结构体里面有三个成员,是三个函数指针 { int (*add)(int a, int b); int (*sub)(int a, int b); int (*mul)(int a, int b); }; static int t_add(int a, int b)//求和函数 { return (a+b); } static int t_sub(int a, int b)//相减函数 { return (a-b); } static int t_mul(int a, int b)//相乘函数 { return (a*b); } struct test_fun fun={ //如何给函数指针赋值 .add = t_add, .sub = t_sub, .mul = t_mul, }; int main(int argc, char **argv) { int a,b; if(3 != argc) { printf("please input :%s num1 num2n",argv[0]); return -1; } a = atoi(argv[1]); b = atoi(argv[2]); printf("a+b=%dn",fun.add(a,b)); printf("a-b=%dn",fun.sub(a,b)); printf("a*b=%dn",fun.mul(a,b)); return 0; }
最后
以上就是清秀冷风为你收集整理的C——结构体中的函数指针的全部内容,希望文章能够帮你解决C——结构体中的函数指针所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复