自定义数据类型 结构体 枚举 typedef

C语言入门:枚举与typedef C语言枚举(enum)是一种用户自定义的数据类型,用于定义一组命名的整数常量。枚举通过关键字enum声明,列举一系列标识符(枚举成员)并赋予整数值。枚举提供了一种更易读、更安全的方式来管理一组相关常量。默认情况下,枚举成员从0开始自动增量赋值,但也可以显式指定值。枚举变量只能取枚举成员中已定义的值。 阅读详情

原文:http://blog.youkuaiyun.com/jerome3/article/details/45024863

一、什么是结构体

当一个整体由多个数据构成时,我们可以用数组来表示这个整体,但是数组有个特点:内部的每一个元素都必须是相同类型的数据。

在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名、年龄、身高等数据构成,这些数

据都具有不同的类型,姓名可以是字符串类型,年龄可以是整型,身高可以是浮点型。

 为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它允许内部的元素是不同类型的。


二、

1.定义形式

 结构体内部的元素,也就是组成成分,我们一般称为"成员"。

结构体的一般定义形式为:

 struct 结构体名{

类型名1 成员名1;

类型名2 成员名2;   

};

比如,我们定义一个学生类

三、结构体变量的定义

前面只是定义了名字为Student的结构体类型,并非定义了一个结构体变量,就像int一样,只是一种类型。

定义结构体的方式一般有三种

1.先定义结构体类型,再定义变量

2.定义结构体类型的同时定义变量

3.直接定义结构体类型变量,省略类型名

四、结构体的注意点

1.结构体不可以包含自己

2.结构体内可以包含别的结构体

3.只有当定义属于结构体类型的变量时,系统才会分配存储空间给该变量

结构体的初始化

将各成员的初值,按顺序地放在一对大括号{}中,并用逗号分隔,一一对应赋值。

比如初始化Student结构体变量stu

结构体只能在定义变量的时候赋初值

枚举

枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。
当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。

1.枚举的定义

1)枚举类型的定义

一般形式为:enum 枚举名 {枚举元素1,枚举元素2,……};

2)枚举变量的定义

跟结构体一样,有3种方式定义枚举变量

1>先定义枚举类型,再定义枚举变量

2>定义枚举类型同时,定义枚举变量

3>省略枚举类型名,直接定义枚举变量

2.枚举的使用

1)C语言编译器会将枚举元素(spring、summer等)作为整型常量处理,称为枚举常量。

2)枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1。

3)也可以在定义枚举类型时改变枚举类型的值


3.枚举变量的基本操作

赋值

可以给枚举变量赋枚举常量或者整型值

遍历枚举元素

typedef

1.typedef作用简介

1)我们可以使用typedef关键字为各种数据类型定义一个新名字

2)我们还可以在别名的基础上再起别名

typedef与指针

除开可以给基本数据类型起别名,typedef也可以给指针起别名

typedef与结构体

给结构体起别名可以使代码更加简洁明

typedef与枚举类型

typedef与指向函数的指针

1)先看一下指向函数的指针如何定义

总结:

1.需要先定义结构体类型,再定义结构体变量。定义结构体类型时,系统是不分配内存空间的。系统只分配内存空间给实际的结构体变量。

2.结构体变量所占内存大小:补齐算法——最大元素的倍数。
3.枚举元素值从0开始,后续元素依次+1。

4.typedef的使用

enum 和 typedef 知识点总结 文章目录前言一、enum(枚举)二、typedef1.引入库2.读入数据总结 前言 主要记录学习编程的经验和个人知识点总结,仅供学习用途。 提示:以下是本篇文章正文内容,主要讲 enum(枚举)和 typedef。 一、enum(枚举) 枚举是C语言中的一种基本数据类型,它可以让数据更简洁,更易读。 枚举语法定义格式为: enum 枚举名 { 枚举元素1, 枚举元素2, ... }枚举变量; 枚举名是自定义的一种数据数据类型名,而枚举变量为枚举名类型的一个变量,叫做枚举变量。 枚举变 阅读详情

相关推荐

c++结构体类型、枚举类型等用户自定义数据类型、typedef、new-lesson8

文章目录前言一、结构体类型1.为什么要用结构体2.结构体的普通用法3.结构体的特殊用法14.结构体的特殊用法2二、共用体类型和枚举类型三、typedef1.这是一个什么?2.怎么玩?总结 前言 C++提供一些基本类型的数据类型,但是一般的数据类型已经不能满足应用的需要,这就需要构建一些复杂的数据类型,如数组、结构体类型、枚举类型、类类型(下一章节就会讲到,他其实和结构体一脉相承),这些统称为用户自定义类型(UDT),或者叫派生类型。我觉得派生类型最有意思的是相互的组合,这也是派生类型和基础类型的区别,基

rushberry的博客 331

typedef enum的用法(枚举)

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { typedef enum { saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday } workday;

Dontla的博客 4万+

Fedproto:原型聚合的联邦学习框架

文中说明,联邦学习通过计算传递梯度聚合模型时,客户端之间的异构性通常会阻碍模型优化收敛和泛化性能。故本文提出新的FedProto框架,将梯度替换成为原型,通过计算、聚合从不同客户端收集到的本地原型,然后将全局原型发送回所有客户端,以规范本地模型的训练。对每个客户机进行局部训练的目的是最小化对本地数据的分类损失,同时保持生成的本地原型足够接近相应的全局原型(损失函数最小+正则)。什么是原型?文中提到:“

weixin_47754029的博客 2649

黑马程序员——c语言复杂数据类型:结构体和枚举,typedef的使用

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、什么是结构体 当一个整体由多个数据构成时,我们可以用数组来表示这个整体,但是数组有个特点:内部的每一个元素都必须是相同类型的数据。 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名、年龄、身高等数据构成,这些数 据都具有不同的类型,姓名可以

jerome3的专栏 904

LabVIEW工程密码保护机制与移除技术详解

LabVIEW作为工业自动化领域广泛使用的图形化编程工具,其密码保护机制涉及文件加密与权限控制等核心技术。从技术实现来看,现代版本采用AES-128加密结合SHA-256哈希校验,而经典版本使用XOR加密配合Base64编码。理解这些加密原理对于工程维护、灾难恢复等合法场景至关重要。在实际应用中,密码移除工具需要处理不同版本的文件结构差异,包括解析XML描述区的Protection标签、动态识别版本并应用对应解密策略。这类技术在工业设备维护、教学研究等场景具有重要价值,但必须注意遵守法律边界,确保拥有合法的

weixin_34161083的博客 390

Android7以上抓取https数据包-无需root

手机内装一个虚拟机,然后在虚拟机内运行我需要抓包的应用,该虚拟机内是不需要证书验证的。完美解决android7.0以上https无法抓包的问题。

qq_45764684的博客 1454

C语言枚举详解,typedef简介(能看懂文字就能明白系列)

什么是枚举,顾名思义就是列举,把可能的取值一一列举出例如,月份有12个月,可以一一列举,一星期有七日,可以一一列举,常见的颜色有红黄橙绿青蓝紫等等。认识枚举是什么及其优点,掌握枚举类型的使用,对typedef有一个初步的认识都是重点与#define不同,typedef创建的符号名只受限于类型,不能用于值。// 使用 #define 的方式100。

古德猫宁的博客 2750

从标准到实战:详解IEC 61000-4-2下的ESD电路防护设计

本文深入解析IEC 61000-4-2标准下的ESD电路防护设计,从静电防护的基础原理到实战应用。详细介绍了接触放电与空气放电的区别、防护器件选型要点(如TVS管和压敏电阻)以及PCB布局的黄金法则,帮助工程师有效提升电子产品的抗静电能力,确保设备在严苛环境下的稳定运行。

weixin_33704234的博客 512

Day 11:C 语言自定义数据类型详解:结构体、内存对齐、共用体、枚举、typedef

struct 结构体名 {类型1 成员名1;类型2 成员名2;类型3 成员名3;......struct:结构体关键字,固定关键字不能省略结构体名:自定义标识符结构体成员列表,每一个成员都有自己独立的数据类型和变量名// 编号// 姓名int age;// 年龄整体是结构体类型idnameage为结构体的成员变量访问结构体成员使用 .点运算符per1.id;per1.name;per1.age;结构体变量。成员名结构体指针 -> 成员名(*结构体指针).成员名。

2201_75484820的博客 860

概率数据关联(PDA):多目标跟踪的基石算法

1. 为什么需要概率数据关联? 2. 核心思想与假设条件 3. 算法核心:概率分配与状态更新 4. 典型应用场景与优势 5. 挑战与改进方向 6. 下期预告

qq_44965657的博客 1464

自抗扰控制(ADRC)理论与工程实践:8.2 模糊ADRC、神经网络ADRC等智能融合变体

智能融合ADRC变体概述 自抗扰控制(ADRC)与智能控制方法(如模糊逻辑、神经网络)的融合,旨在突破传统ADRC在非线性、时变系统中的应用局限。智能融合ADRC主要通过以下方式实现性能提升: 模糊ADRC 参数自整定:利用模糊推理在线调节ADRC带宽参数,实现自适应控制。 非线性反馈:用模糊控制器替代线性PD,灵活设计非线性控制策略。 优势:融入专家经验,无需精确模型;局限:依赖规则库设计,稳定性分析困难。 神经网络ADRC 增强ESO:用神经网络学习扰动动态,提高估计精度。

技术工作者 228

C语言 自定义数据类型(结构体 typedef 共用体 位段 枚举)

1、结构体的定义及初始化 通过数据类型来定义一个一个的变量,当需要很多相同类型的变量时有数组。 基本数据类型在使用时很方便,但是利用它们来描述现实世界就显得捉襟见肘。 例如需要保存一个班学生的信息”姓名,年龄,分数”,按照前面的学习需要单独 定义三个数组,一个保存姓名,一个保存年龄,一个保存分数。这样定义对于后面 的维护,修改,删除会带来麻烦。好比你用三个记事本一个记录学生姓名,一个记 录年龄,一个记录分数,如果删除姓名记事本中的第十个学生,而在年龄,分数记 事本中却删除了第十一个,这是很...

hello,world! 902

huggingface下载提示huggingface_hub.errors.EntryNotFoundError:404 Client Error: (Request 1D: Root...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1232

使用typedef为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称

typedef 为基本数据类型定义新的类型名 也就是说,系统默认的所有基本类型都可以利用 typedef 关键字来重新定义类型名,示例代码如下所示: typedef unsigned int COUNT; 这样,当跨平台移植程序时,我们只需要修改一下 typedef 的定义即可,而不用对其他源代码做任何修改。 2.为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称。 以结构体为例,下面定义一个名为Person的结构体 struct Person { int number; ch.

qq_38354320的博客 870

智能车浅谈——手把手让车跑起来(电磁篇)

手把手让你的电磁车上路。

qq_41954556的博客 7万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

自定义数据类型上——结构体

C语言中的自定义数据类型(用户自己建立的)有:数组类型,结构体类型,共用体类型,枚举类型。

2402_87493158的博客 1780

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

c语言笔记之自定义数据类型

enum 枚举名称 {枚举元素 1 , 枚举元素 2 , . . . 枚举元素N };注意:元素之间是用逗号,逗号隔开的,真无语。烦死了,今天放假了,似乎又没有特点:枚举元素的值必须在同一枚举中是唯一的.枚举元素的值必须是整数类型,通常是int如果没有为枚举元素指定值,编译器会自动为它们分配值,从0开始,依次递增。定义枚举的时候也可以为枚举元素自定义值,需保证唯一性和整型类型。如果有的元素赋值,有的元素没赋值,没有赋值元素的值是,紧挨着的,上一个,元素的值加1。

qq_46115245的博客 552

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C语言之——自定义数据类型

目录 前言:什么是自定义数据类型? 一,自定义数据类型之:数据类型命名 1,深入应用typedef: 二,自定义数据类型之:结构体类型命名 1,深入理解struct结构体: 三,自定义数据类型之:联合体类型命名 1,union与struct的区别: 2,union类型应用: 四,自定义数据类型之:枚举类型命名 前言:什么是自定义数据类型? 所谓自定义数据类型,就是用一个新名字重新对一个数据类型命名,后面新名字就有了该数据类型的功能,在调用该新名字时,就相当于调用该数据类型。...

m0_58702068的博客 7586

15、C语言用户自定义数据类型

C语言用户自定义数据类型 一、结构体 定义语法: struct [名称] { 成员列表; }[变量列表]; 示例程序: #include #include struct Student { int age; char *name; char sex; } Davlid={24,"Davlid",'M'}; struct { i

xuxianmei的专栏 4357

第八章 复合数据类型

结构体定义:一个可以包含不同数据类型的结构,用户可以自定义数据类型,在结构体中可以声明不同的数据类型。结构体等复合数据类型使用前必须先定义其中包含哪些成员,其长度为多少,再进行具体的结构体变量的定义,最后在程序中使用。定义一般形式:结构体也可以嵌套定义,即在结构体定义中,不但可以包含基本数据类型,还可以包含已定义的结构体数据类型。声明一个结构体时,结构体中的成员数目不宜过多,若成员数目过多结构体将不宜管理。联合与结构体的本质区别:枚举用于解决集合类问题,其所描述的状态为有限的几个。

weixin_74928256的博客 998

C语言day9,自定义数据类型

举使用enumenum 枚举名称枚举元素1,枚举元素2,...枚举元素N枚举元素也称为枚举成员或枚举常量,具有如下特点:1.枚举元素的值必须在同一枚举中是唯一的2.枚举元素的值必须是整数类型,通常是int3.如果没有为枚举元素指定值,编译器会自动为它们分配值,从0开始,依次递增。4.定义枚举的时候也可以为枚举元素自定义值,需保证唯一性和整型类型。// 定义枚举类型,表示星期一到星期天,枚举元素的值自动分配,从0到6。

qq_51712982的博客 715

C语言 typedef

C语言 typedef

weixin_65951505的博客 474

结构体和共用体超详解析,typedef关键字起别名的教学。手把手带你过C语言的高级篇内容,学完此篇,可以可以学习数据结构与算法(后续会出教程,依旧是免费,麻烦点个关注,你们的支持是我走下去的动力,谢)

C语言中的自定义数据类型:枚举与结构体 枚举(Enumeration)是一种用户自定义的数据类型,用于定义一组相关常量,提高代码可读性。枚举元素自动从0开始赋值,也可自定义整数值。枚举变量只能赋值为枚举常量之一。 结构体(Structure)允许将不同类型的数据组合成一个复合类型,解决数组只能存储相同类型数据的限制。结构体通过struct关键字定义,包含多个成员变量,使用点号(.)访问成员。结构体变量可以存储复杂的数据结构,如学生信息、通讯录等。 两者都增强了C语言的数据表达能力,枚举适用于有限值的状态表示

2301_76633821的博客 646

10天学会嵌入式技术之C语言-Day-9

手把手入行嵌入式之10天学会C语言day-9

2301_80748708的博客 1222

C语言自定义数据类型(C语言十)

讲解三种自定义数据类型:结构体、共用体和枚举类型;以及主函数的参数和动态分配内存。

Java.L的博客 3408

c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解

枚举数据类型枚举:一一列举。枚举类型是一些标识符的集合,从形式上看枚举类型就是用大括号将不同的标识符名称放在一起。用枚举类型声明的变量,其变量的值只能取自括号内的这些标识符。关键字:enum。枚举类型的声明1.枚举类型的一般形式。enum 枚举类型名 {标识符列表};实例:enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Sa...

weixin_39965161的博客 1154
上一篇: 计导课指针 数组部分笔记大杂烩
下一篇: 深入理解c语言——‘\0’ ,‘0’, “0” ,0之间的区别
Peggy_Chang
博客等级 码龄11年 21粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值