在学习驱动程序的时候,代码中常常看到各种结构体,结构体中也有各种函数指针。在这里复习一下结构体,以及指针函数。 
结构体一般有以下几种形式的用法: 
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 num2\n",argv[0]);return -1;}a = atoi(argv[1]);b = atoi(argv[2]);printf("a+b=%d\n",fun.add(a,b));printf("a-b=%d\n",fun.sub(a,b));printf("a*b=%d\n",fun.mul(a,b));return 0;
}

C——结构体中的函数指针相关推荐

  1. 结构体中定义函数指针

    结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...

  2. 结构体中的函数指针(c语言里一种思想)

    阅读raft源码的时候看到结构体里面的void(*xx) 看不懂这个地方,看上去又像面向对象的类方法,但是这是c语言的结构体啊,了解了这是函数指针.小趴菜~ 一.函数指针 函数指针是指向函数的指针变量 ...

  3. C语言中的指针应用,函数指针,指针函数,结构体中定义函数指针。

    指针函数 指针函数就是一个返回指针的函数,其本质是一个函数,该函数的返回值是一个指针. 声明一个指针函数 int* fun(int x,int y); 例子 typedef struct _Data{ ...

  4. 结构体自定义指针函数c语言,C语言结构体中的函数指针

    C语言结构体中的函数指针 C语言结构体中的函数指针内容由小编收集整理,希望对您的 学习有所帮助!更多内容请关注应届毕业生考试网! 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.所以,标准 ...

  5. 结构体自定义指针函数c语言,详解C语言结构体中的函数指针

    结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.所以,标准C中的结构体是不允许包含成员函数的,当然C++中的结构体对此进行了扩展.那么,我们在C语言的结构体中,只能通过定义函数指针的方式, ...

  6. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  7. c语言 一个函数返回结构体指针,详解C语言结构体中的函数指针

    结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.所以,标准C中的结构体是不允许包含成员函数的,当然C++中的结构体对此进行了扩展.那么,我们在C语言的结构体中,只能通过定义函数指针的方式, ...

  8. c语言中结构体类型定义的函数指针,结构体中定义函数指针

    结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...

  9. 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )

    文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...

最新文章

  1. OpenCV,马赛克 常用图像增强算法的实现
  2. linux配置接口多地址,Linux /etc/network/interfaces配置接口方法
  3. centos启动流程
  4. boost::mpl模块bind相关的测试程序
  5. 软考网络管理员学习笔记8之第八章网络安全技术
  6. 还在担心快应用没流量?全场景新玩法来袭!
  7. 开发者必备Mysql命令
  8. Excel VBA编程实现自动分页
  9. MATLAB有限元二维编程(三角单元)
  10. Spring Boot打包成执行jar后获取classpath下文件异常解决
  11. ListNode的理解
  12. 杀怪物(dfs)题解
  13. 【UEFI基础】UEFI网络框架之概述
  14. 里氏代换原则(Liskov Substitution Principle)
  15. Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)
  16. 爬虫第一弹:安居客房地产数据爬虫
  17. python——操作剪贴板,删除文本中的空格
  18. 色值的计算、转换、获取
  19. 304 Not Modified详解
  20. 计算机科学省级期刊,计算机时代杂志

热门文章

  1. Oracle database sqldeveloper study(1)
  2. SQLSERVER到底能识别多少个逻辑CPU?
  3. UEFI win7系统的安装
  4. DB2 常用的SQL
  5. BPMN 2.0 流程设计
  6. 从Asp.net实现资源全球化和本地化
  7. 视频图像处理芯片排名_关于图像处理芯片(DSP)
  8. excel自动调整列宽_Excel双击鼠标的9种用法
  9. WebStrom如何创建项目,为什么我开始选择HTML5到自定义路径报错
  10. Intellij idea 添加浏览器