C语言中typedef的四种用法(附带详细解析!!)

1)typedef基本数据类型取“别名”

typedef unsigned int size;
typedef unsigned int16 u16;
typedef unsigned int8 u8;

2)typedef为自定义数据类型取“别名”

typedef struct{menu_f btn1; // make arraymenu_f btn2;menu_f btn3;draw_f draw;itemLoader_f loader;
}menuFuncs_t;
typedef enum
{DISPLAY_DONE,DISPLAY_BUSY,
//	DISPLAY_TOOFAST
} display_t;
其中,枚举类型名 表示定义的枚举类型的名称,枚举常量1、枚举常量2 等表示枚举类型中的常量。
每个枚举常量都有一个整数值,它们的默认值从 0 开始,依次递增 1

typedef为数组取“别名”

typedef char arr_name[20];

这是一个 C 语言中的类型定义语句,用于定义一个名为 arr_name 的数组类型,数组元素类型为 char,数组长度为 20。

具体来说,typedef char arr_name[20]; 定义了一个名为 arr_name 的数组类型,它包含了 20 个 char 类型的元素。通过这个类型定义,你可以使用 arr_name 来声明一个长度为 20 的字符数组,而不必每次都写出完整的数组声明语句。

例如,使用这个类型定义可以这样声明一个长度为 20 的字符数组:

arr_name my_array;

这样就等同于以下完整的数组声明:

char my_array[20];

这种类型定义可以使代码更加简洁和易读,特别是在多处需要声明相同类型的数组时。

4)typedef为指针取“别名”

typedef void (*display_f)(void);

这是一个 C 语言中的类型定义语句,用于定义一个函数指针类型 display_f。具体来说,display_f 是一个指向无返回值、无参数的函数的指针类型。

在这个类型定义中,typedef 关键字用于定义一个新的类型名 display_f,它是一个函数指针类型。函数指针类型是指可以指向函数的指针类型,它可以用于将函数作为参数传递给其他函数,或者将函数作为返回值返回。

这个类型定义语句的语法如下:

typedef 返回类型 (*指针变量名)(参数列表);

其中,返回类型 表示函数的返回值类型,参数列表 表示函数的参数列表,指针变量名 表示定义的函数指针类型的名称。

因此,typedef void (*display_f)(void); 定义了一个名为 display_f 的函数指针类型,它可以指向一个无返回值、无参数的函数。在实际使用中,可以使用 display_f 类型来声明函数指针变量,并将其指向一个符合要求的函数。例如:

void my_display() {printf("Hello, world!\n");
}int main() {display_f display_ptr = my_display; // 将函数指针指向 my_display 函数display_ptr(); // 调用函数指针,输出 "Hello, world!"return 0;
}

在这个示例中,display_ptr 是一个 display_f 类型的函数指针变量,它被赋值为 my_display 函数的地址。然后,通过调用 display_ptr() 来调用 my_display 函数,输出 “Hello, world!”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DexCap——斯坦福李飞飞团队泡茶机器人:更好数据收集系统的原理解析、源码剖析

前言 2023年7月,我司组建大模型项目开发团队,从最开始的论文审稿,演变成目前的两大赋能方向 大模型应用方面,以微调和RAG为代表 除了论文审稿微调之外,目前我司内部正在逐一开发论文翻译、论文对话、论文idea提炼、论…

k8s:优雅关闭pod的简单例子

先通过Dockerfile创建一个image vim Dockerfie <<<< 内容如下&#xff1a; FROM centosRUN sed -i -e "s|mirrorlist|#mirrorlist|g" /etc/yum.repos.d/CentOS-* RUN sed -i -e "s|#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.o…

学习分享-分布式 NoSQL 数据库管理系统Cassandra以及它和redis的区别

前言 最近在学习的过程中遇到如何应对海量幂等 Key 所消耗的内存的问题&#xff0c;在网上查找资料了解到Cassandra或许是解决方式之一&#xff0c;所以查找了Cassandra的相关资料及其Cassandra和redis的区别。 什么是Cassandra Cassandra 是一个开源的分布式 NoSQL 数据库管…

Qsemaphore

Qsemaphore 实现 给while循环阻塞延时 基本思路就是&#xff1a; whlie循环里面 通过m&#xff3f;bthreadFlag&m_bStatus这两个标志位&#xff0c;判断是否进入while循环&#xff0c;再根据40行的acquire&#xff08;&#xff09;来阻塞循环&#xff0c;因为定时器的槽函数…

SQL Server数据库xp_cmdshell提权笔记

文章目录 一、简介二、搭建环境三、利用条件1、查询 xp_cmdshell 是否开启&#xff0c;返回为1则证明存在2、判断权限是不是sa&#xff0c;回是1说明是sa3、开启xp_cmdshell4、关闭xp_cmdshell 四、获取数据库权限1、成功获取sqlserver&#xff0c;进行登陆2、开启xp_cmdshell权…

代码随想录算法训练营第31天(py)| 贪心 | 455.分发饼干、376. 摆动序列、53. 最大子序和

455.分发饼干 力扣链接 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#…

【学习笔记】Redis-AOF日志重写的机制

目录 前言1. 触发机制2. 子进程执行3. 写入与同步4. 安全保障5. 潜在问题与优化 前言 AOF&#xff08;Append Only File&#xff09;日志重写是Redis中一种优化持久化文件大小和提高数据恢复效率的机制。以下是AOF日志重写的具体机制和步骤&#xff1a; 1. 触发机制 AOF重写…

Docker|了解容器镜像层(1)

引言 容器非常神奇。它们允许简单的进程表现得像虚拟机。在这种优雅的底层是一组模式和实践&#xff0c;最终使一切运作起来。在设计的根本是层。层是存储和分发容器化文件系统内容的基本方式。这种设计既出人意料地简单&#xff0c;同时又非常强大。在今天的帖子[1]中&#xf…

29网课交单平台 epay.php SQL注入漏洞复现

0x01 产品简介 29网课交单平台是一个专注于在线教育和知识付费领域的交单平台。该平台基于PHP开发,通过全开源修复和优化,为用户提供了高效、稳定、安全的在线学习和交易环境。作为知识付费系统的重要组成部分,充分利用了互联网的优势,为用户提供了便捷的支付方式、高效的…

继承-进阶

父子类成员共享 普通成员对象/父子间不共享&#xff0c; 成员独立 函数成员共享&#xff08;函数不存储在对象中&#xff09; 子类由两部分构成&#xff1a;父类中继承的成员和子类中新定义成员 继承方式 子类中存在父类private成员但不可直接访问&#xff08;及时在类中&am…

微信如何防止被对方拉黑删除?一招教你解决!文末附软件!

你一定不知道&#xff0c;微信可以防止被对方拉黑删除&#xff0c;秒变无敌。只需一招就能解决&#xff01;赶快来学&#xff01;文末有惊喜&#xff01; 惹到某些重要人物&#xff08;比如女朋友&#xff09;&#xff0c;被删除拉黑一条龙&#xff0c;那真的是太令人沮丧了&a…

加密经济浪潮:探索Web3对金融体系的颠覆

随着区块链技术的快速发展&#xff0c;加密经济正在成为全球金融领域的一股新的浪潮。而Web3作为下一代互联网的代表&#xff0c;以其去中心化、可编程的特性&#xff0c;正深刻影响着传统金融体系的格局和运作方式。本文将深入探讨加密经济对金融体系的颠覆&#xff0c;探索We…

机器学习实验----支持向量机(SVM)实现二分类

目录 一、介绍 (1)解释算法 (2)数据集解释 二、算法实现和代码介绍 1.超平面 2.分类判别模型 3.点到超平面的距离 4.margin 间隔 5.拉格朗日乘数法KKT不等式 (1)介绍 (2)对偶问题 (3)惩罚参数 (4)求解 6.核函数解决非线性问题 7.SMO (1)更新w (2)更新b 三、代…

此表单不安全,因此系统已关闭自动填充功能

问题截图&#xff1a; 截图就不放了&#xff0c;公司的系统不方便&#xff0c;就是form表单会有个提示“此表单不安全&#xff0c;因此系统已关闭自动填充功能” 解决思路&#xff1a; 1、问题原因 使用https访问&#xff0c;但表单提交地址是http的 2、查看表单配置 表单…

MSP430单片机控制流水灯,Proteus仿真

作品功能 本项目利用MSP430单片机控制一个简单的流水灯&#xff0c;通过按键切换流水灯的模式。用户可以通过按键控制LED灯的方向&#xff0c;从左向右或从右向左依次点亮。 作品的硬件材料 MSP430单片机 具体型号&#xff1a;MSP430G2553 LED灯 数量&#xff1a;8个类型&…

JAVA 分布式服务框架

Dubbo 理论&#xff1a; 1&#xff1a;注册中心宕机&#xff0c;注册者和消费者依然可以保持通讯&#xff08;使用本地缓存配置&#xff09;&#xff0c;切换下一台直至链接可用。 ps1&#xff1a;没有新的注册者的前提下正常&#xff0c;如有新注册者&#xff0c;消费者走本地…

掌握复选框(Checkbox)的奥秘:全选与反选功能实现

前言&#xff1a; 在网页设计中&#xff0c;复选框&#xff08;Checkbox&#xff09;是一种常见且实用的交互元素&#xff0c;它允许用户从一系列选项中选择多个项。无论是电子商务网站上的商品筛选&#xff0c;还是在线表单的数据收集&#xff0c;复选框都发挥着重要作用。然…

文本审核纠错

探索高效文本审查利器&#xff1a;Word Checker-CSDN博客 GitHub - shibing624/pycorrector: pycorrector is a toolkit for text error correction. 文本纠错&#xff0c;实现了Kenlm&#xff0c;T5&#xff0c;MacBERT&#xff0c;ChatGLM3&#xff0c;LLaMA等模型应用在纠错…

如何设置vue3项目中默认的背景为白色

方法1&#xff1a;通过CSS全局样式 在全局CSS文件中设置&#xff1a; 如果你的项目中有全局的CSS文件&#xff08;如App.vue或专门的CSS文件&#xff09;&#xff0c;你可以直接设置body或html标签的背景颜色。 在src/assets文件夹中&#xff08;或者任何你存放CSS文件的地方&a…

js解析成语法树以及还原

const {parse} require("babel/parser"); const traverse require("babel/traverse").default; const generator require("babel/generator").default;// 1.定义要处理的代码 const jscode function square(n) {return n * n; };// 2.使用ba…