C语言--typedef的使用


 前言

在C语言中使用结构体时必须加上struct这个关键字,那有没有办法省略这个呢?要想达到这个目的就 需要用到关键字typedef,顾名思义”类型定义”。 typedef 数据类型 新的别名; 它是用来操作数据类型。其主要作用有两个: 1.给一个较长较复杂的类型取一个简单的别名。 2.给类型取一个和问题相关的别名。 这两种情况在生活中都非常常见,例如第1种情况,中华人民共和国简称中国,第2种情况,你的同学非常 的漂亮给她起个外号叫”大美丽”。 第一种情况的使用如下:

int main()
{
	typedef unsigned long long int uint64;//给无符号长长整型取别名叫uint64
	//取一个别名  u代表无符号  int代表整形  64代表64位

	unsigned long long int a = 10;  //定义一个无符号长长整型
	uint64 b = 20;   //定义一个无符号长长整型


	return 0;
}

 上面的代码给unsigned long long int数据类型取了一个简单的别名uint64,其中u表示符号,int表示 整数,64表示64位。

typedef unsigned long long int uint64;//给无符号长长整型取别名叫uint64
typedef int* Pint;//给整型指针int * 取别名叫Pint
typedef int Arr[10];//这是什么呢?
typedef int (*Pfun)(int, int);//这是什么呢?
int main()
{
	int a = 10;
	Pint p = &a;
	printf("%d\n", sizeof(Arr));
	return 0;
}

 第2行代码给int*类型取了一个别名Pint,在第8行Pint定义的变量就是int*这种数据类型了。 对于比较复杂的类型如3,4行就不容易理解了。那怎么办呢?关键是牢记typedef是用来定义数据类型 的。 对于复杂的类型可以先把typedef去掉,看看是定义一个什么类型的变量,然后加上typedef它就由这种 类型的变量提升为这种数据类型。

 利用typedef定义的新类型使用如下:

typedef int* Pint;//给整型指针int * 取别名叫Pint
typedef int Arr[10];//Arr为整数数组类型
typedef int (*Pfun)(int, int);//Pfun为函数指针类型
int Max(int a, int b)
{
	return a > b ? a : b;
}
int main()
{
	int a = 10;
	Pint p = &a; //p为指针变量
	Arr arr = { 1,2,3,4,5,6,7,8,9,10 };//arr为数组
	Pfun pf = Max;//pf为函数指针变量
	printf("%d\n", pf(10, 20));
	return 0;
}

 第13行,Pint为整型指针类型,那么它定义的变量就是整型指针变量。 第15行,Arr为整型数组类型,那么它定义的变量就是整型数组变量。 第17行,Pfun为函数指针类型,那么它定义的变量就是函数指针变量。 typedef的第二种情况: 给类型取一个和问题相关的别名。这种方式最典型的应用是size_t和time_t这 两种类型。size_t应用在计数方面,time_t应用在时间方面。在visual studio2022中这两者的定义如下:

回到本节提到的问题,如何在使用结构体时省略struct这个关键字呢?可以按照如下方法定义结构体。 例如:

//第一个方式
struct A
{
	int a;
	char b;
};
typedef struct A A;//给struct A起个别名叫A
//第二种方式
typedef struct B
{
	char a;
	int b;
}B; //给struct B起个别名叫B
int main()
{
	A aa = { 10,'x' }; //直接使用A
	B bb = { 'y',20 }; //直接使用B
	return 0;

创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。

欢迎各位帅哥美女点赞👍评论⭐️收藏⭐️,谢谢!!!

如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。

祝各位生活愉快⭐️

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL其他集群类型介绍

常用的/常见的Mysql集群方案 1.MySQL Replication2.MySQL Fabric3.MySQL NDB Cluster4.MGR(MySQL Group Replication)5.心跳检测SAN共享存储(heartbeat SAN)6.心跳检测DRBD磁盘复制(heartbeat DRBD)7.MMM…

大桌子想传大文件

受高手指导说服务器想传大点的文件,得把两个地方改改 先是这里 然后这里也要改 哦。对了,改完之后要重启服务器。别忘了。

网络爬虫代理ip有什么好处?爬虫工作使用代理IP有哪些优势?

在爬虫工作中,使用代理IP有很多好处,可以帮助爬虫程序更加高效地完成任务。以下是使用代理IP的几个优势: 1. 增加匿名性 使用代理IP可以隐藏爬虫程序的真正IP地址,增加匿名性,避免被目标网站封禁。通过代理IP&#xff…

【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…

高德地图 web js端 出现 INVALID_USER_SCODE 10008 MD5安全码未通过验证

图片意思就是在引入 高德js和css 链接前 引入 <script type"text/javascript">window._AMapSecurityConfig {securityJsCode:您申请的安全密钥,} </script> 到这里就完美结束了

【JavaEE初阶】 TCP三次握手四次挥手(超详细版)

文章目录 &#x1f334;三次握手四次挥手总览&#x1f6eb;三次握手&#xff08;建立连接&#xff09;&#x1f6a9;为什么要三次握手&#x1f4cc;解决彼此双发彼此认同的问题&#x1f4cc;验证双方的接听发送能力是否正常 &#x1f6a9;建立连接阶段涉及到的两个重要状态: &a…

blender动画制作软件拓扑全流程

拓扑在三维动画制作中至关重要&#xff0c;原因如下&#xff1a; 1. 动画变形&#xff1a; 自然形变&#xff1a; 良好的拓扑结构能够支持角色或物体在动画中的自然形变&#xff0c;例如关节弯曲、肌肉收缩等。流畅运动&#xff1a; 适当的拓扑有助于保持模型表面的平滑性&…

Linux友人帐之网络编程基础FTP服务器

一、概述 1.1FTP基本概念 FTP&#xff08;File Transfer Protocol&#xff09;是一种用于文件传输的标准协议。FTP服务是一种能够让用户通过FTP协议在本地计算机和远程服务器之间进行文件传输的服务。FTP服务可以允许用户上传或下载文件&#xff0c;也可以进行目录浏览、文件删…

Windows安装Docker(无网)

Windows安装Docker&#xff08;无网&#xff09; window无网安装Docker 1. 开启虚拟化功能 1. 开启window的虚拟化功能 方式一&#xff1a;直接在window的搜索框搜索 “启用或关闭windows功能”&#xff0c;就可以快捷进入【启用或关闭windows功能】页面 方式二&#xff1…

【MySQL】想不想知道数据库到底是啥?想了就进来看看

数据库是什么 前言正式开始连接mysql理解mysql第一层理解第二层理解第三层理解 小问题见见猪跑show databases;create database xxx;create table xxx; 主流数据库mysql架构SQL语句的种类存储引擎 前言 你手上有没有MySQL&#xff1f;有了最好&#xff0c;没有的话建议下一个&…

2022美亚杯团队赛

2022美亚杯团体赛 - XDforensics-Wiki 2022 美亚杯 团体赛AGC部分资格赛服务器部分 所有服务器部分解题思路_2022美亚杯团体赛复盘-CSDN博客 目录 AGC 1 2 Media Sever挂载 3 ssh登入的看法 PTS 4 5 ssh日志 6 7 查看docker列表 8 查看docker运行 9 建立网站…

solidworks对电脑要求高吗?2023solidworks配置要求

solidworks对电脑要求高吗&#xff1f;SolidWorks是一款功能强大的三维CAD软件&#xff0c;对电脑配置有一定的要求。一般来说&#xff0c;运行SolidWorks需要的电脑配置包括较高的处理器性能、足够的内存和存储空间&#xff0c;以及一块性能良好的显卡。此外&#xff0c;对于大…

Leetcode_3:无重复字符的最长子串

题目描述&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 示例 2: 输入: s "bbbbb"…

记一次上位机软件线程泄露的分析及解决

上位机软件在客户现场隔一段时间说操作了没反应&#xff0c;但是上位机又没死&#xff0c;出现了一些奇怪现象&#xff1a; 左上角的时间不走了&#xff08;本来是1s运行一次&#xff09;使用任务管理器查看&#xff0c;内存占用1.5G,线程有3000多个&#xff0c;正常情况下&am…

将 ONLYOFFICE 文档编辑器与 С# 群件平台集成

在本文中&#xff0c;我们会向您展示 ONLYOFFICE 文档编辑器与其自有的协作平台集成。 ONLYOFFICE 是一款开源办公套件&#xff0c;包括文本文档、电子表格和演示文稿编辑器。这款套件支持用户通过文档编辑组件扩展第三方 web 应用的功能&#xff0c;可直接在应用的界面中使用。…

VMware ifconfig ip报错解决记录

1.报错 ifconfig后出现以下报错 lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 9216 b…

Element-Ui入门教学——<el-upload>限制上传文件类型

要限制<el-upload>上传文件的类型&#xff0c;需要给组件绑定:before-upload属性。 before-upload可选参数, 上传文件之前的钩子&#xff0c;参数为上传的文件&#xff0c;若返回 false 或者 Promise 则停止上传。HTML代码 <template><el-uploadclass"uplo…

竞赛 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

Simulia仿真之CST的使用指南(1) | 百世慧®

前言 CST是Computer Simulation Technology的缩写,是全球范围内众多工程师都喜欢使用的高端电磁仿真分析软件。 本文又名《智慧的CST生活》这里一共列出了120个章节&#xff0c;其中包括CST使用过程中的有用小技巧&#xff0c;还有给用户提供技术支持的过程中常见的问题。本专…

Linux服务器上搭建JupyterNotebook教程

搭建需知 1.确保是Linux服务器&#xff1b; 2.已经在linux服务器上安装好anaconda3&#xff1b; 搭建教程 请按照顺序依次执行下面的命令&#xff1a; 1、安装Jupyter Notebook 执行以下命令&#xff0c;安装jupyter notebook conda install jupyter【注】 如果anaconda3…