【c语言】typedef的基本用法 | 定义格式

news2024/10/6 4:11:58

创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!! 

主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ  

c语言系列专栏: c语言之路重点知识整合 

 

目录

定义格式与含义

 一、基本类型的自定义

二、指针、数组类型的自定义

三、函数类型的自定义

四、嵌套定义

总结 


定义格式与含义

模板:   typedef 现有类型名 自定义名称

typedef就是重命名!  注意是类型名,即不同类型的特征。

将现有的类型名重命名为自定义名称,并且可以通过自定义名称进行变量操作。

方便阅读与编程语义的流畅性

例如:c语言中没有布尔类型,可以通过typedef命名一个布尔类型

#include <stdio.h>
typedef int BOOLEAN;   //为现有int类型 命名一个新的类型 通常自定义类型名称为大写
int main ()
{
       /* 模板: typedef 现有类型名 自定义名称 */
    BOOLEAN sex = 1;
    return 0;
}

这就是将int类型重命名为BOOLEAN类型,其本质还是int类型

  

 一、基本类型的自定义

	typedef int INTEGER;
	int a;
	INTEGER b;

	typedef char BYTE;
	BYTE c;

int a与INTEGER b等价,本质都是int a。BYTE本质为char类型。

二、指针、数组类型的自定义

将int* 类型重命名为PINT。 数组类型去掉数组名改为想改的自定义名。数组指针类型同理。

	typedef int* PINT;   //int *p = z,t,x;
	PINT z, t, x;

	typedef int FIVEINT[5];
	FIVEINT a5 = { 1,2,3,4,5 };
	FIVEINT* pa5 = &a5;

	typedef int(*P_FIVEINT)[5];
	P_FIVEINT pfi = &a5;

三、函数类型的自定义

通过对函数指针类型的重命名。 使用函数指针执行函数代码。

关于函数指针的知识点:c语言函数指针详解

	double (*pmath)(double);            //函数指针变量
	typedef double (*PMATH)(double);    //函数指针 类型
	PMATH p = sqrt;
	PMATH ps[4] = {sqrt,ceil,floor,fabs};
	for (int i = 0; i < 4; i++)
	{
		printf("%f\n",ps[i](2.5));
	}

 

四、嵌套定义

嵌套就是对命名后的名字再命名。无论进行多少次重命名,本质还是int类型。

#include <stdio.h>
/*4 嵌套定义 */
typedef int INTEGER;//新类型
typedef INTEGER* POINT_INT;//为新类型指针 创建另一个新类型
typedef POINT_INT* POINT_POINT_INT;
int main()
{
     INTEGER a=10;
     POINT_INT p=&a;
     POINT_POINT_INT pp=&p;
    printf("%d\n",a);
    printf("%d\n",*p);
    printf("%d\n",**pp);
    return 0;
}

总结 

typedef就是将现有的类型名重命名为自定义名称,方便阅读与编程语义的流畅性

 

大家的点赞、收藏、关注将是我更新的最大动力!欢迎留言或私信建议或问题。

大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!

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

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

相关文章

【图像分割】【深度学习】SAM官方Pytorch代码-Image encoder模块Vision Transformer网络解析

【图像分割】【深度学习】SAM官方Pytorch代码-Image encoder模块Vision Transformer网络解析 Segment Anything&#xff1a;建立了迄今为止最大的分割数据集&#xff0c;在1100万张图像上有超过1亿个掩码&#xff0c;模型的设计和训练是灵活的&#xff0c;其重要的特点是Zero-s…

从Domino目录导出你想要的信息

大家好&#xff0c;才是真的好。 无论出于什么原因&#xff0c;很多时候&#xff0c;我们要从Domino目录&#xff08;names.nsf&#xff09;中导出人员、群组或Domino相关的配置信息。不过更多时候&#xff0c;还没开始导&#xff0c;很多人就说Domino封闭&#xff0c;不让导出…

由浅入深MFC学习摘记--第四部分下

目录 第十三章 多文件与多显示MDI 和 SDI动态拆分窗口静态拆分窗口拆分 拆分窗口示例同源子窗口CMDIFrameWnd::OnWindowNew范例程序 多文件 第十四章 MFC 多线程从操作系统层面看执行线程线程优先级从程序设计层面看执行线程MFC 多线程程序设计工作线程UI线程执行线程的结束线程…

CASAIM 自动化3d测量系统检测压缩机壳体尺寸偏差/装配验证

压缩机是一种将低压气体提升为高压气体的从动的流体机械&#xff0c;是制冷系统的心脏。 压缩机的壳体共有三部份组成&#xff1a;排气壳体&#xff08;主要是组成压缩机排气通道及接口&#xff09;&#xff0c;机体壳体&#xff08;主要是组成压缩机的涡盘、涡盘支承座、电机…

Bladex后端实现登入时间过期后自动跳转登入页

Bladex后端实现登入时间过期后自动跳转登入页 背景现状期待成果解决方法一找到鉴权配置页面重写拦截器addInterceptors创建CustomMiddleware编制拦截逻辑修改登入有效时常 背景现状 Bladex可手动设置过期时间&#xff0c;但是我使用的是springboot BladeX 2.8.1.RELEASE版本&am…

游戏测试的面试技巧

游戏测试的面试技巧 1.自我介绍 回答提示&#xff1a;一般人回答这个问题过于平常&#xff0c;只说姓名、年龄、爱好、工作经验 &#xff0c;这些在简历上都有&#xff0c;其实&#xff0c;企业最希望知道的是求职者能否胜任工作&#xff0c;包括&#xff1a;最强的技能、最深入…

docker镜像创建|实战案例(ssh|systemd|nginx|apache|tomcat)

docker镜像创建|实战案例&#xff08;ssh|systemd|nginx|apache|tomcat&#xff09; 一 Docker 镜像的创建1.基于现有镜像创建2基于本地模板创建3 基于Dockerfile 创建为什么Docker里的centos的大小才200M&#xff1f;DockerfileDocker 镜像结构的分层 4 Dockerfile 案例&#…

宝光股份 | 打造营销管理数据平台,实现营销管理和业务双提升

陕西宝光真空电器股份有限公司&#xff08;以下简称“宝光股份”&#xff09;&#xff0c;注册资本3.3亿元&#xff0c;于2002年1月在上海证券交易所上市&#xff08;股票代码&#xff1a;600379&#xff09;。 宝光股份已发展成为享誉国内外的真空灭弧室产销基地&#xff0c;…

Python每日一练(20230426)

目录 1. 删除重复字符 ※ 2. 颜色分类 &#x1f31f;&#x1f31f; 3. 计算圆周率 ※ &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 删除重复字符 原标题&#xff1a; 输出不重复…

mysql数据库SQL语句orderBy排序同时limit分页出现数据重复问题

先说解决方案&#xff1a;排序中使用唯一值&#xff08;例如主键id&#xff09;&#xff0c;保证每条数据不重复 SELECT * FROM table WHERE 1 1 ORDER BY create_time,id DESC LIMIT 0, 10;1、问题 MySQL官方描述&#xff1a; 如果多行在列中具有相同的值ORDER BY&#xff…

更加适合python小白的object类的特殊方法~

人生苦短&#xff0c; 我用python python 安装包资料:点击此处跳转文末名片获取 一、object类的源码 class object:""" The most base type """def __delattr__(self, *args, **kwargs): signature unknown""" Implement dela…

MybatisPlus入门和分页和条件查询里面的条件和null值的处理方式和查询投影和查询条件设置和id生成相关和逻辑删除

MybatisPlus 简化了mybatis之前的在springboot整合MyBatis时需要自己写sql语句在接口中&#xff0c;现在只需要让接口继承BaseMapper<实体类>&#xff0c;然后在测试类中接口.增删改查方法&#xff08;&#xff09;即可 不用像springboot整合mybatis一样勾选spring web…

第三章 游戏对象基本操作

创建游戏世界的第一步&#xff0c;就是创建一个一个的游戏对象。当然&#xff0c;大部分的游戏对象都是3D模型&#xff0c;是需要先导入到Unity工程里面后再使用的。这里&#xff0c;我们使用Unity自带的一些基本游戏对象来说明场景中的一些基本操作。在DirectX的课程中&#x…

即时配送,即时很重要!商家能不能盈利,“快”是源头

“家里水果没有了&#xff0c;选几样叫个跑腿送来吧。” “现在得囤点布洛芬了&#xff0c;我从网上下单。” “同城配送真是太及时、太方便了。” 最近一段时间&#xff0c;如果要问有什么产业突然兴起的话&#xff0c;即时零售无疑是市场最受欢迎的产业。甚至有种说法&…

C盘变红了如何清理?释放C盘空间的3大方法!

案例&#xff1a;c盘变红了如何清理 【我的电脑才用了不到一年&#xff0c;现在c盘已经爆红了&#xff0c;c盘里的文件那么多&#xff0c;我也不敢乱删里面的文件&#xff0c;请问下大家遇到c盘变红的情况都是如何清理的呀&#xff1f;】 C盘是电脑中最常用的磁盘之一&#x…

ubuntu中编译serialplot

源码链接&#xff1a;GitHub - hyOzd/serialplot: Small and simple software for plotting data from serial port in realtime. 安装依赖 apt install qtbase5-dev libqt5serialport5-dev cmake mercurial qttools5-dev libqt5svg5-dev 下载编译serialplot hg clone https…

九耶丨阁瑞钛伦特-Java分布式(一)

分布式是指将一个大型系统分为多个小型子系统&#xff0c;这些子系统可以通过网络相互通信&#xff0c;在共享资源的同时协同工作&#xff0c;从而构成一个大型的、功能完整的系统。分布式系统有以下几个特点&#xff1a; &#xff08;1&#xff09;分割资源&#xff1b; &…

【Java数据结构】二叉树的前中后序遍历(递归和非递归)

二叉树的遍历 递归做法前序遍历中序遍历后序遍历 非递归前序遍历中序遍历后序遍历 二叉树遍历是二叉树的一种重要操作 必须要掌握 二叉树的遍历可以用递归和非递归两种做法来实现 递归做法 前序遍历 前序遍历的遍历方式是先根节点 在左节点 在右节点 述这棵树前序遍历的结…

一种视频算法插件流水线执行架构

目的 将视频接入进来以后&#xff0c;使用算法对图像进行处理并且输出 1 各种接入 2 解码 3 解码后图像算法 如矫正算法 4 共享输出 方式 使用动态库的方式进行扫描底层&#xff0c;每个动态库为一个插件&#xff0c;每个插件包含特定的函数&#xff0c;通过扫描的方式加载所…

Juniper 命令集合,分好类了,网工收好了哦!

Juniper是一家全球领先的网络设备制造商&#xff0c;其设备广泛应用于企业、运营商和数据中心等领域。下面是Juniper常用命令集合&#xff0c;以供参考。 基本命令 show interfaces&#xff1a;查看所有接口状态。show interface [interface-name]&#xff1a;查看指定接口的状…