1 原因

看了open ssl代码里面很多在结构体里面放很多函数指针,然后再来调用,这样比较规范和统一

2 代码实现

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>typedef struct key_info
{int (*init)(struct key_info *info);int (*set_name)(struct key_info *info, const char *name);int (*get_name)(struct key_info *info, char name[], int size);pthread_mutex_t lock;    char name[128];int (*fun)(struct key_info *info, int x, int y);
}KeyInfo;static int init(KeyInfo *info);
static int set_name(KeyInfo *info, const char *name);
static int get_name(KeyInfo *info, char name[], int size);
static int add(int x, int y);static int add(KeyInfo *info, int x, int y)
{return x + y;
}
static int init(KeyInfo *info)
{assert(info != NULL);memset(info->name, 0, sizeof(info->name));info->init = init;info->set_name = set_name;info->get_

C语言之在结构体里面放很多函数指针相关推荐

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

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

  2. C语言中对结构体排序

    在C语言中对结构体排序 用qsort()函数进行排序, qsort()里面要传入4个参数–qsort(数组名,数组长度,sizeof(),排序方法) 实验9-5 查找书籍 (20分) 给定n本书的名称 ...

  3. C语言程序设计 使用结构体类型处理组合数据——用户自定义数据类型

    1 定义和使用结构体变量 1.1 自定义建立结构体类型 好处:反映出成员之间的内在联系. 在程序中建立所需要结构体类型.例如: 指定了一个新的结构体类型struct student. struct是声 ...

  4. c 定义结构体时提示应输入声明_C语言结构体的坑很多,这6大方法千万要记住!...

    本文福利在文末! C语言可谓是编程界的传奇语言,历经几十年,依然排名前列. 本文主要说的是C语言中的结构体,结构体是C语言中重要的一部分内容,也是C语言中常用的一种数据结构. 一.关于结构体在C语言中 ...

  5. C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)

    示例: typedef struct _user {char name[20];char sex[20];int age;struct list_head mylist;//自定义结构体里保存双向循环 ...

  6. C语言如何获取结构体中指定元素的大小?sizeof ( (X*)0 ) -> Y)(空指针操作)

    获取结构体的大小,这好办,这样就可以了: #include <stdio.h>struct user {char name[20];char age[10]; };int main() { ...

  7. C 语言实例 - 使用结构体(struct)

    C 语言实例 - 使用结构体(struct)C 语言实例 C 语言实例 使用结构体(struct)存储学生信息. 实例 #include <stdio.h> struct student ...

  8. Go语言基础之结构体

    转载地址:https://www.liwenzhou.com/posts/Go/10_struct/ Go语言中没有"类"的概念,也不支持"类"的继承等面向对象 ...

  9. 成员变量隐藏c语言,C语言中隐藏结构体的细节

    我们都知道,在C语言中,结构体中的字段都是可以访问的.或者说,在C++ 中,类和结构体的主要区别就是类中成员变量默认为private,而结构体中默认为public.结构体的这一个特性,导致结构体中封装 ...

最新文章

  1. android sdk 如何重新生成debug.keystore
  2. go swagger
  3. java抓新闻_【图片】【抓取】Java获取各大网站新闻【java吧】_百度贴吧
  4. Ajax和JSON-学习笔记01【原生JS方式实现Ajax】
  5. IT兄弟连 Java语法教程 Java的发展历程
  6. 机器学习面试题(part3)
  7. 用源生的JavaScript编写一个异步的ajax库
  8. scala seq java_Scala中的两个Seq比较
  9. 斗罗大陆真3D手游实力上线,带你感受魂兽猎杀的超燃时刻
  10. weblogic部署方式
  11. 【window】Windows10下为PHP安装redis扩展
  12. main函数的argc和argv
  13. Atitit 项目通讯接口方案attilax总结.docx
  14. poj3254:基础状压dp
  15. cc2530c语言编程库,cc2530程序设计实例之CC2530 RF部分使用—实现点对点收发
  16. jQuery的$.ajax()与php后台交互,进行文件上传并保存在指定目录
  17. stm32 IAP 程序编写心得
  18. word中mathtype的公式后面的光标位置
  19. 10月全球搜索引擎市场份额:Google、Bing份额大涨
  20. python的dict

热门文章

  1. 利用Azure communication service实现跟Teams同样等级的沟通协作应用
  2. 如何对 string 进行Base64编码,解码?
  3. C# 10 完整特性介绍
  4. eShopOnContainers 知多少[11]:服务间通信之gRPC
  5. 如何编写高性能的C#代码(四)字符串的另类骚操作
  6. 使用ASP.NET Core 3.x 构建 RESTful API - 3.4 内容协商
  7. 学习MVVM设计模式后第一次用于生产
  8. 如何在ASP.NET Core程序启动时运行异步任务(2)
  9. Docker最全教程——从理论到实战(二)
  10. 向ASP.NET Core迁移