C 语言 typedef 关键字

C 语言 typedef 关键字

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的有意义的名字。也就是用于重新定义已经存在的变量的名称。

typedef 的语法

typedef <existing_name> <alias_name>

在以上语法中,“ **existing_name”是已经存在的变量的名称,而“ alias_name”**是给现有变量赋予的另一个名称。

例如,假设我们要创建一个类型为unsigned int的变量,那么如果我们要声明此类型的多个变量,那么它将变得很繁琐。为了克服这个问题,我们使用typedef关键字。

示例

typedef unsigned int unit;

在上面的语句中,我们使用typedef关键字声明了unsigned int类型的unit变量。

现在,我们可以通过编写以下语句来创建unsigned int类型的变量:

unit a, b;

而不是写:

unsigned int a, b;

您应该已经观察到typedef关键字通过为已经存在的变量,提供代替名称来提供简化的快捷方式。当我们处理长数据类型(尤其是结构声明)时,此关键字很有用。

让我们通过一个简单的实例来理解。

示例

#include <stdio.h>
int main()
{typedef unsigned int unit;unit i,j;i=10;j=20;printf("i值为 :%d",i);printf("\nj值为 :%d",j);return 0;
}

输出结果

i值为 :10 
j值为 :20

对结构体使用typedef

以下为结构声明:

struct student
{
char name[20];
int age;
};
struct student s1;

在上面的结构声明中,我们通过编写以下语句创建了学生类型的变量:

struct student s1;

上面的语句显示创建了变量s1,但是该语句相当长。为了避免这么大的声明,我们使用typedef关键字,创建类型为student的变量。

示例

struct student
{
char name[20];
int age;
};
typedef struct student stud;
stud s1, s2;

在上面的声明中,我们声明了struct student类型的变量stud。现在,我们可以在程序中使用stud变量来创建struct student类型的变量。

上面的typedef可以写成:

示例

typedef struct student
{char name[20];int age; 
} stud;
stud s1,s2;

从上面的声明中,我们得出结论,typedef关键字减少了代码的长度和数据类型的复杂性。它还有助于理解程序。

让我们看另一个示例,在其中使用typedef结构声明。

示例

#include <stdio.h>
typedef struct student
{char name[20];int age;
}stud;
int main()
{stud s1;printf("输入学生s1的详细信息: ");printf("\n输入学生姓名:");scanf("%s", &s1.name);printf("\n输入学生年龄:");scanf("%d", &s1.age);printf("\n 学生姓名 : %s", s1.name);printf("\n 输入学生年龄 : %d", s1.age);return 0;
}

输出结果

输入学生s1的详细信息: 
输入学生姓名: Peter
输入学生年龄: 28 
学生姓名 : Peter 
学生年龄 : 28

typedef与指针一起使用

我们也可以借助typedef为指针变量提供另一个名称或别名。

例如,我们通常声明一个指针,如下所示:

int* ptr;

我们可以重命名上述指针变量,如下所示:

typedef int* ptr;

在上面的语句中,我们声明了**int ***类型的变量。现在,我们只需使用’ **ptr’变量即可创建int ***类型的变量,如以下语句所示:

ptr p1, p2 ;

在上面的语句中,p1p2是’ **ptr’**类型的变量。

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

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

相关文章

url最大长度

https://blog.csdn.net/weixin_38673922/article/details/130932457 对于前端作为分享页&#xff0c;或者跳转新页面时&#xff0c;或者做hrbrid 通信&#xff0c;需要用到一系列的参数来处理相对的业务逻辑&#xff0c;那么具体url可以携带多少参数合适&#xff0c;从网上搜索…

【CodeTop】TOP 100 刷题 11-20

文章目录 11. 二叉树的层序遍历题目描述代码与解题思路 12. 搜索旋转排序数组题目描述代码与解题思路 13. 买卖股票的最佳时机题目描述代码和解题思路 14. 岛屿数量题目描述代码与解题思路 15. 环形链表题目描述代码与解题思路 16. 有效的括号题目描述代码与解题思路 17. 合并两…

使用 millis() 函数作为延迟的替代方法(电位器控制延迟时间)

接线图&#xff1a; 代码&#xff1a; unsigned long currentMillis 0; unsigned long previousMillis_LED1 0; unsigned long LED1_delay0; unsigned long previousMillis_LED2 0; unsigned long LED2_delay0; #define LED1 3 #define LED2 9 #define P1 A2 …

动态规划求数组中相邻两数的最小差值( 即相差的绝对值 ) java 实现

算法的核心是&#xff1a;计算当前数和前一个数的差值,用该差值和以前最小的连续数的差值作比较&#xff1b;如果当前的差值更小&#xff0c;则发现了更小的连续数的差值&#xff1b;如果当前的差值更大&#xff0c;则沿用以前的最小连续数差值作为新的最小连续数差值。 MinDif…

python写文件

output_file open(E:/XD_transfer/代码/CNN_new/try.csv, w) output_file.write(Sample, \n) for j in range(5):output_file.write(str(j) \n)

2023亚太杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…

HttpClient发送MultipartFile多文件及多参数请求

1、环境准备&#xff1a; <dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency><dependency><groupId>org.apache.httpcomponent…

关于 win11 系统下12代/13代英特尔大小核架构 CPU 的 VMware 优化:输入延迟、卡顿,大小核调度

关于 win11 系统下12代/13代英特尔大小核架构 CPU 的 VMware 优化&#xff1a;输入延迟、卡顿&#xff0c;大小核调度 一、前言二、VMware 的优化2.1 键鼠输入延迟问题的解决2.1.1 搜索内核隔离2.1.2 关闭内存完整性并重启2.1.3 搜索启用或关闭windows功能2.1.4 关闭 hyper-v 和…

Java中有接口了为什么还需要有抽象类,抽象类和普通类和接口,三者之间有什么区别和联系

在 Java 中&#xff0c;接口、抽象类和普通类都是不同的概念&#xff0c;各自有其特定的用途和特性。了解它们之间的区别和联系有助于更好地利用 Java 的面向对象编程特性。 接口&#xff08;Interface&#xff09; 定义: 接口是一种完全抽象的类&#xff0c;它允许声明方法但…

【23真题】难!下沙“小清华”难度爆增!

今天分享的是23年“下沙小清华”杭州电子科技大学843的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年杭电843考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;平均分为112分&#xff0c;最高分为145分&#xff01;该院校23…

Impala VS Hive

Impala和Hive的关系 Impala是基于Hive的大数据实时分析查询引擎&#xff0c;直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析&#xff0c;实现了Hive的SQL语义的子集&#xff0c;功能还在不断的完善中。 与Hive的…

如何用CHAT理解数理化?

问CHAT&#xff1a;扇形面积的概念&#xff0c;简单阐述一下。 CHAT回复&#xff1a; 扇形面积是指扇形这种二维几何图形所覆盖的区域大小。 扇形是一个圆的一部分&#xff0c;是由圆心出发的两条射线&#xff08;半径&#xff09;和这两条射线所夹角决定的圆周上的弧线所围成…

近期为何事故频发,企业安全生产如何保障?

近期&#xff0c;多地陆续发生了一系列企业安全生产事故&#xff0c;给企业和员工带来了严重的生命和财产损失&#xff0c;引发了社会各界对安全生产问题的广泛关注。安全生产是企业发展的重要保障&#xff0c;然而&#xff0c;企业在追求经济效益的过程中&#xff0c;往往忽视…

为虚幻引擎开发者准备的Unity指南

目录 1.前言2.编辑器2.1 Scene 视图&#xff08;视口&#xff09;2.2 Game 视图 (Play in Editor)2.3.Hierarchy 窗口 (World Outliner)2.4 Project 窗口(Content Browser)2.5 Inspector (Details)2.6 Console&#xff08;消息视图/输出日志&#xff09;2.7 Modes 面板在哪里&a…

​​​​​​​3分钟实现EG网关串口连接麦格米特PLC

EG网关串口连接麦格米特PLC 前言&#xff1a;麦格米特PLC广泛应于工业控制领域&#xff0c;是一款性能高、稳定性强的PLC设备。此文档将介绍如何使用EG系列网关通过串口连接麦格米特PLC&#xff0c;并添加到EMCP物联网云平台&#xff0c;实现电脑Web页面、手机APP和微信对麦格米…

【Rxjava详解】(一)观察者模式的拓展

文章目录 RxJava引入扩展的观察者模式RxJava的观察者模式基本实现 RxJava入门示例Action RxJava引入 在介绍RxJava之前先说一下Rx。全称是Reactive Extensions&#xff0c;直译过来就是响应式扩展 Rx基于观察者模式&#xff0c;它是一种编程模型&#xff0c;目标是提供一致的…

uniapp:如何实现点击图片可以全屏展示预览

这个需要使用uniapp中的api&#xff1a;uni.previewImage&#xff0c;使用方法如下 1、html <template><view><image src"图片路径" click"preview"></image></view> </template> 2、JavaScript <script> e…

pyhive的离线安装及使用示例

pyhive离线安装 pyhive下载离线安装包 下载方式一:直接把jieba包下载到/download/pip/目录下 pip download -d /download/pip/ pyhive[hive_pure_sasl]下载方式二:建一个requirement.txt文件里面一行一行写需要的包,/usr/local/download/pip/是下载目录 pip download -d /d…

怎么判断list是否为null

List<Entity> baseMess new ArrayList<>(); baseMess motiveService.getBaseMessage(machine.get(i),preDate,nowDate); System.out.println("获取Size"baseMess.size()); baseMess.removeIf(Objects::isNull); System.out.println("获取Size"…

Cannot read property ‘pickAlgorithm‘ of null

Cannot read property pickAlgorithm of null 报错显示 node 和 npm的版本号不对应 查看版本号 node -v npm -v node的版本对应 Previous Releases | Node.js (nodejs.org) 我们需要改成对应的mpm版本号 npm install npm6.14.12 -g nodejs与npm版本对应关系以及使用nvm管理n…