C语言关键字 typedef 的功能是什么?
一、问题
语⾔有 32 个关键字,其中 int 的功能是声明整型变量,struct 的功能是声明结构体变量,那么 typedef 的功能是什么呢?
二、解答
1. typedef 的功能
在 C 语⾔中除了可以使⽤标准类型名(如 int、 char、float 等)和⾃定义结构体、共⽤体等类型外,还可以使⽤ typedef 给⼰有的类型定义别名,typedef 的功能就是给⼰经存在的数据类型取⼀个别名,注意并不是重新定义⼀个新的数据类型。
2.为什么要给数据类型起别名
很多⼈都喜欢给别⼈“起外号",typedef 关键字就好⽐是这个喜欢起外号的⼈。外号是随便起的吗?并不是,外号往往是根据这个⼈的特点⽽起的。
例如,带眼镜的,外号就 叫“⼩四眼”;如果长的⾼点,就叫 “ ⼤个 ” :长的⽩点、胖点,可能就叫他“⽩猪”等。
通过这些外号,⼈们可以更快地记住这些⼈(揭示别⼈缺点的外号可能会伤及他⼈的⾃尊,所以尽量不要给别⼈起外号!)。同样,给数据类型起外号也是有原因的,是为了更能突显出这个数据类型在这个程序中的作⽤。
例如,int 型的数据在这个程序⾥主要起到了计数的 作⽤,那么 typedef 就可以给这个 int 起个外号。例如:
typedef int COUNT, COUNT a,b;
当 COUNT 类型出现在程序中定义变量时,程序员们可以很清晰地判断出这是个⽤于计数的变量。这个外号使程序的可读性⼤⼤增强。
3. typedef 起别名引发的迷惑
在⾃定义结构体的数据类型中,会经常⽤到 typedef 为这个结构体取个别名,例如:
typedef struct PERSON
{int id;int name[20];char sex;int age;
} PER, *Per1;
为⾃定义的这个结构体取的别名为 PER 和 Perl,代表上⾯的这个结构体类型,定义 ⼀个此结构体类型的变量al,有如下⽅法:
(1) struct PERSON al;
(2) PER al;
这两种定义变量的⽅法是没有区别的。定义⼀个此结构体类型的指针的⽅法如下:
(1) struct PERSON *a2;
(2) Perl a2;
(3) PER *s2;
上述三种定义结构体类型指针的⽅法也是没有区别的。
上述定义变量的⽅法很多初学者会迷惑,在此明确列出,希望可以减少在学习上的迷惑。其实,在定义结构体类型的变量 a1 时,可以将结构体 struct PERSON{...} 看成⼀个整体,typedef 就相当于给 struct PERSON{.…} 起了个别名叫 PER ;与此同时,给 struct PERSON {…}* 起了个别名叫 Per1。
三、总结
很多⼈在学习 typedef 时都会将其误认为是定义新的数据类型。其实不然,只是起个别名⽽已。
相关文章:
C语言关键字 typedef 的功能是什么?
一、问题 语⾔有 32 个关键字,其中 int 的功能是声明整型变量,struct 的功能是声明结构体变量,那么 typedef 的功能是什么呢? 二、解答 1. typedef 的功能 在 C 语⾔中除了可以使⽤标准类型名(如 int、 char、float …...
【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台-源码下载与项目配置
基于.NET Framework 4.8 开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等应用场景,同时支持图像与视频检测。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runtime以及OpenCV DNN,支持CPU、IGP…...
如何在 Ubuntu 12.04 VPS 上使用 MongoDB 创建分片集群
简介 MongoDB 是一个 NoSQL 文档数据库系统,可以在水平方向上很好地扩展,并通过键值系统实现数据存储。作为 Web 应用程序和网站的热门选择,MongoDB 易于实现并可以通过编程方式访问。 MongoDB 通过一种称为“分片”的技术实现扩展。分片是将…...
阿里云VOD视频点播流程(1)
一、开通阿里云VOD 视频点播(ApsaraVideo VoD,简称VOD)是集视频采集、编辑、上传、媒体资源管理、自动化转码处理、视频审核分析、分发加速于一体的一站式音视频点播解决方案。登录阿里云,在产品找到视频点播VOD ,点击…...
Python爬虫获取豆瓣电影Top100
大家好,我是秋意零。 今天分析一篇,Python爬虫获取豆瓣电影Top100。 在此之前,我没有学习过爬虫,只有一丢丢的Python基础。下面效果的实现源码几乎没经过我,而是AI百老师。我主要负责了对应的调试以及根据我想要的功…...
动态规划专训8——背包问题
动态规划题目中,常出现背包的相关问题,这里单独挑出来训练 A.01背包 1.01背包模板题 【模板】01背包_牛客题霸_牛客网 (nowcoder.com) 你有一个背包,最多能容纳的体积是V。 现在有n个物品,第i个物品的体积为𝑣&am…...
软件杯 深度学习花卉识别 - python 机器视觉 opencv
文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &a…...
学习笔记:【QC】Android Q - IMS 模块
一、IMS init 流程图 高清的流程图参考:【高清图,保存后可以放大看】 二、IMS turnon 流程图 高清的流程图参考:【高清图,保存后可以放大看】 三、分析说明 1、nv702870 不创建ims apn pdp 2、nv702811 nv702811的时候才创建…...
NodeMCU ESP8266 操作 SSD1306 OLED显示屏详解(图文并茂)
文章目录 1 模块介绍2 接线介绍3 安装SSD1306驱动库4 源码分析4.1 硬件兼容性4.2 可能存在的问题总结1 模块介绍 我们将在本教程中使用的OLED显示屏是SSD1306型号:单色0.96英寸显示屏,像素为12864,如下图所示。 OLED显示屏不需要背光,这在黑暗环境中会产生非常好的对比度。…...
不抽象:Increase API 设计原则
原文:Increase - 2024.04.26 (注:Increase 是一家提供金融技术服务的公司。) API 资源是 API 的实体或对象。决定如何为这些实体命名和建模可以说是设计 API 最难也是最重要的部分。您所公开的资源组织了用户对您的产品如何工作…...
mybatis调用数据库存储过程
mybatis调用数据库存储过程及常见属性详解 调用mapper String visitCode mapper.getVisitCode(objectMap);Dao层,xml文件代码编写 <select id"getVisitCode" parameterType"map" resultType"string" statementType"CALLAB…...
【git】发生冲突后回滚提交
gerrit 冲突, 无法合并到主干 那么先回滚 参考这里的 reset 操作: 回滚 到上一个提交 $ git reset --soft HEAD~1 # 數字表示移動到 HEAD後面第幾個刚提交的会撤回, stash 刚刚提交的 然后去pull 最新的 修改冲突: 最后再…...
ISO14229 -1 UDS诊断服务记录-001:0x34\0x36\0x37\0x31\0x19\0x14服务报文格式介绍
目录 1、34服务-请求下载 1.1、诊断请求格式 1.2、正响应格式 1.3、负响应格式 1.4、工程应用分析 2、36服务-传输数据 2.1、请求报文格式 2.2、正响应格式 2.3、负响应NRC 3、37服务-退出传输 3.1、报文格式 3.2、正响应格式 3.3、负响应NRC 4、31服务-例程控制 …...
使用 MediaMTX 和 FFmpeg 推拉 RTSP 流媒体
实时流传输协议 RTSP(Real-Time Streaming Protocol)是 TCP/IP 协议体系中的一个应用层协议,由哥伦比亚大学、网景和 RealNetworks 公司提交的 IETF RFC 标准。该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP 在体系…...
Mac 电脑安装 Raptor 流程图软件的方法
0. 安装逻辑 (1)运行 raptor,本质上需要 mac 能够运行 windows 程序,因此需要安装 .NET Runtime 7.0,这是微软程序运行必须的文件。 (2)运行 raptor 还需要安装依赖文件 mono-libgdiplus。 &am…...
W801学习笔记二十:宋词学习应用
前三章完成了唐诗的应用,本章将实现宋词的学习应用。 宋词与唐诗的区别不大,马上开始。 1、我们需要参考前面唐诗的方式,把宋词文本下载下来,并进行格式整理。 W801学习笔记十七:古诗学习应用——上 2、在菜单中添加…...
EPAI手绘建模APP转换模型和坐标系
(11) 模型转换 图 273 转换工具栏 ① 实体转成曲面,先选择需要转成曲面的实体模型,再点击该按钮。将选择的实体模型转成多个曲面。 ② 曲线转成NURBS样条曲线,先选择需要转成NURBS样条曲线的边模型,修改转换参数,将选…...
STM32快速入门(串口传输之USART)
STM32快速入门(串口传输之USART) 前言 USART串口传输能实现信息在设备之间的点对点传输,支持单工、半双工、全全双工,一般是有三个引脚:TX、RX、SW_RX(共地)。不需要一根线来同步时钟。最大优…...
什么是网络安全和网络隐私?
什么是网络安全?这个是我最感兴趣的话题,网络安全说白了就是在网络上的安全,跟现实中一样,现实中为了家里的安全,我们会给家门上锁,会装监控,农村的话可能还会养一条狗,只有我们让别人进我们家,别人才能进来,对于计算机来说也是一样的,我们会设置账户的密码,会设置防火墙,会安…...
树莓派变小路由器放出热点wifi
环境 树莓派4Bubuntu20 作用 树莓派放出wifi后,笔记本电脑连接树莓派的wifi,并且ip配置在一个网段,就可以互相通信(笔记本放出wifi,树莓派连接效果一样),这样的好处是树莓派只要一上电就会自…...
ARM架构SUB与SUBS减法指令详解
1. ARM减法指令概述在ARM架构中,SUB(减法)和SUBS(带标志位的减法)是最基础的算术指令之一。这些指令用于执行寄存器值的减法操作,是构建更复杂算术运算和控制流程的基础。SUB指令从目标寄存器中减去一个立即…...
给 Agent 配一个浏览器:Cloudflare Browser Run 全面解析
互联网是为人类建的,Agent 要用它 Agent 需要和网页交互。填表单、提取数据、截图、导航——这些是 Agent 执行任务的基本动作。问题是,整个互联网的设计预设是"有一个人坐在屏幕前操作"。Agent 不是人,它没有鼠标,没有…...
【Pixel专属Gemini Edge推理引擎】:本地运行LLM不联网、零延迟、功耗降低47%——实测数据首次公开
更多请点击: https://intelliparadigm.com 第一章:Gemini Edge推理引擎的Pixel专属定位与技术边界 Gemini Edge 是 Google 为 Pixel 系列设备深度定制的端侧推理引擎,其核心设计目标并非通用模型部署,而是围绕 Pixel 的硬件协同栈…...
【花雕学编程】Arduino动手做(252)---ESP32S3矩阵Matrix开发板之搭建开发环境
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的…...
MQTT-Client-Framework测试策略:单元测试、集成测试与多Broker兼容性
MQTT-Client-Framework测试策略:单元测试、集成测试与多Broker兼容性 【免费下载链接】MQTT-Client-Framework iOS, macOS, tvOS native ObjectiveC MQTT Client Framework 项目地址: https://gitcode.com/gh_mirrors/mq/MQTT-Client-Framework MQTT-Client-…...
2026一氧化碳监测仪选型避坑指南:康高特等厂家深度对比评测
引言一氧化碳(CO),这种无色、无味、无刺激性的气体,因其与血红蛋白的极高亲和力,在工业生产、公共安全及环境监测领域构成了严峻的“隐形威胁”。随着全球工业化进程的加速和安全生产标准的日益提升,对一氧…...
基于MCP协议集成AI求职助手:自动化简历优化与面试准备
1. 项目概述:将AI求职助手集成到你的工作流 如果你正在用Claude Desktop或者Cursor这类AI助手,并且恰好又在找工作或者准备职业跃迁,那你可能已经体会过那种“割裂感”——你需要手动把简历内容、职位描述、面试问题来回复制粘贴到聊天窗口&…...
基于LLM的风格化内容生成:从提示工程到系统化实践
1. 项目概述:一个基于AI的创意内容生成工具最近在折腾AI应用开发,发现了一个挺有意思的项目,叫“jasonkneen/vibeclaw”。乍一看这个名字,可能会有点摸不着头脑,但简单来说,它是一个利用大型语言模型&#…...
为什么92%的DeepSeek部署项目在上线30天内遭遇Prompt注入?4个被忽视的配置陷阱全曝光
更多请点击: https://intelliparadigm.com 第一章:DeepSeek prompt注入防护的严峻现实与认知重构 近年来,DeepSeek系列大模型在开源社区广泛部署,但其默认推理接口(如/v1/chat/completions)对用户输入缺乏…...
终极指南:掌握AMD Ryzen深度调试的完整解决方案
终极指南:掌握AMD Ryzen深度调试的完整解决方案 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.…...
