当前位置: 首页 > news >正文

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

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

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

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

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就是将现有的类型名重命名为自定义名称,方便阅读与编程语义的流畅性

 

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

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

相关文章:

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

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...

深度学习论文分享(二)Data-driven Feature Tracking for Event Cameras

深度学习论文分享&#xff08;二&#xff09;Data-driven Feature Tracking for Event Cameras&#xff08;CVPR2023&#xff09; 前言Abstract1. Introduction2. Related Work3. Method3.1. Feature Network3.2. Frame Attention Module3.3. Supervision 4. Experiments5. Con…...

蛇优化算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 蛇优化算法算法流程图初始化进化操作搜索阶段&#xff08;无食物&#xff09;——全局搜索搜索阶段&#xff08;有食物&#xff09;——局部搜索战斗模式交配模式 备…...

循环神经网络(RNN)简单介绍—包括TF和PyTorch源码,并给出详细注释

文章目录 循环神经网络&#xff08;RNN&#xff09;入门教程1. 循环神经网络的原理2. 循环神经网络的应用3. 使用keras框架实现循环神经网络3.1导入对应的库及加载数据集3.2.数据预处理3.3定义RNN模型3.4训练模型3.5测试模型 4.使用PyTorch框架实现上述功能—注释详细5.结论 循…...

Struts2 快速入门

Struts2 是一个基于 MVC 设计模式的 Java Web 应用程序框架&#xff0c;它可以帮助我们更加有效地开发 Web 应用程序。Struts2 采用了前端控制器模式&#xff0c;通过核心控制器 DispatchServlet 将所有请求进行集中处理&#xff0c;然后将请求分发到指定的 Action 中&#xff…...

关于PullToRefreshView下拉刷新失效问题

一、问题原因 昨天&#xff0c;突然一个问题丢在了我的头上&#xff0c;用户反馈说某某界面下拉刷新不好使啊&#xff0c;怎么回事。二话不说直接运行项目&#xff0c;经过测试&#xff0c;发现果然不好使。一看代码提交日期好家伙2020年&#xff0c;百思不得其解&#xff0c;…...

JAVA开发中的六大原则

JAVA开发中的六大原则&#xff0c;也被称为SOLID原则&#xff0c;是软件开发中常用的一组设计原则。这些原则提供了实现高质量、易于维护和可扩展软件的基本策略。 以下是JAVA开发中的六大原则以及它们的详细说明&#xff1a; 单一职责原则&#xff08;Single Responsibility…...

Matplotlib 安装

Matplotlib 安装 本章节&#xff0c;我们使用 pip 工具来安装 Matplotlib 库&#xff0c;如果还未安装该工具&#xff0c;可以参考python 怎么使用pip进行包管理。 安装 matplotlib 库&#xff1a; pip install matplotlib 安装完成后&#xff0c;我们就可以通过 import 来…...

CF - Li Hua and Pattern

题意&#xff1a;给出了矩阵&#xff0c;里面每个位置分为蓝色或红色&#xff08;数据上用1和0体现了&#xff09;&#xff0c;给出了一个操作次数&#xff0c;每次可以改变一个坐标的颜色&#xff0c;问能否通过操作使得图像旋转180度后不变。 解&#xff1a;很容易想到&…...

重磅!阿里云云原生合作伙伴计划全新升级:加码核心权益,与伙伴共赢新未来

在今天的 2023 阿里云合作伙伴大会上&#xff0c;阿里云智能云原生应用平台运营&生态业务负责人王荣刚宣布&#xff1a; “阿里云云原生合作伙伴计划”全新升级。他表示&#xff1a; 云原生致力于帮助企业客户最大限度的减轻运维工作&#xff0c;更好的实现敏捷创新&#x…...

OSCP-Escape(gif绕过)

目录 扫描 WEB 扫描 sudo nmap 192.168.233.113 -p- -sS -sVPORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) 8080/tcp open http Apache…...

iMazing2023最新免费版iOS设备管理软件

iMazing是一款功能强大的iOS设备管理软件&#xff0c;它可以帮助用户备份和管理他们的iPhone、iPad或iPod Touch上的数据。除此之外&#xff0c;它还可以将备份数据转移到新的设备中、管理应用程序、导入和导出媒体文件等。本文将详细介绍iMazing的功能和安全性&#xff0c;并教…...

Git上传文件代码到GitHub

删除线上git:删除GitHub仓库里的文件夹_阿巴资源站的博客-CSDN博客 1. 创建空文件夹 2. cd 到本文件夹 3. git init &#xff0c;初始化&#xff0c;在本地创建一个Git仓库 4. 同时按住“ Command Shift . ”三个按键&#xff0c;即可查看当下文件夹中的隐藏文件 5. 克隆…...

JavaScript概述二(Date+正则表达式+Math+函数+面向对象)

1.Date 1.1 new一个Date对象表示当前系统时间 var nownew Date(); console.log(now);1.2 根据传入的时间格式表示时间 var date1new Date(2023-4-20 00:16:40); console.log(date1); 1.3 传入时间毫秒数&#xff0c;返回从1900年1月1日8时&#xff08;东八区&#xff09;X分X…...

一个朋友弄来的,太牛了,特别是后面内容,不看不知道,一看吓一跳,电话,热线

一个朋友弄来的&#xff0c;太牛了&#xff0c;特别是后面内容&#xff0c;不看不知道&#xff0c;一看吓一跳&#xff0c;我也收藏一下&#xff1a; 工商银行 95588 建设银行 95533 农业银行 95599 中国银行 95566 交通银行 95559 浦发银行 95528 民生银行 95568 兴业银行 955…...

VGA协议实践

文章目录 前言一、VGA接口定义与传输原理1、VGA接口定义2、传输原理3、不同分辨率对应不同参数 二、Verilog编程1、VGA显示彩色条纹2、VGA显示字符3、输出一幅彩色图像4、Quartus操作1、添加PLL核2、添加ROM核 三、全部代码四、总结五、参考资料 前言 VGA的全称是Video Graphi…...

毕业5年的同学突然告诉我,他已经是年薪30W的自动化测试工程师....

作为一名程序员&#xff0c;都会对自己未来的职业发展而焦虑。一方面是因为IT作为知识密集型的行业&#xff0c;知识体系复杂且知识更新速度非常快&#xff0c;“一日不学就会落后”。 另外一方面&#xff0c;IT又是劳动密集型的行业&#xff0c;不仅业人员多&#xff0c;而且个…...

操作系统原理 —— 进程有哪几种状态?状态之间如何切换?(七)

进程的五种状态 首先我们一起来看一下进程在哪些情况下&#xff0c;会有不同的状态表示。 创建态、就绪态 当我们刚开始运行程序的时候&#xff0c;操作系统把可执行文件加载到内存的时候&#xff0c;进程正在被创建的时候&#xff0c;它的状态是创建态&#xff0c;在这个阶…...

可算是熬出头了,测试4年,费时8个月,入职阿里,涨薪14K

前言 你的努力&#xff0c;终将成就无可替代的自己。 本科毕业后就一直从事测试的工作&#xff0c;和多数人一样&#xff0c;最开始从事点点点的工作&#xff0c;看着自己的同学一步一步往上走&#xff0c;自己还是在原地踏步&#xff0c;说实话这不是自己想要的状态。 一年半…...

5款十分小众的软件,知道的人不多但却很好用

今天推荐5款十分小众的软件&#xff0c;知道的人不多&#xff0c;但是每个都是非常非常好用的&#xff0c;有兴趣的小伙伴可以自行搜索下载。 1.视频直播录制——OBS Studio OBS Studio可以让你轻松地录制和直播你的屏幕、摄像头、游戏等内容。你可以使用OBS Studio来创建多种…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

深度解析云存储:概念、架构与应用实践

在数据爆炸式增长的时代&#xff0c;传统本地存储因容量限制、管理复杂等问题&#xff0c;已难以满足企业和个人的需求。云存储凭借灵活扩展、便捷访问等特性&#xff0c;成为数据存储领域的主流解决方案。从个人照片备份到企业核心数据管理&#xff0c;云存储正重塑数据存储与…...