结构体、共用体、枚举类型、typedef梳理
一、先声明类型名,再定义类型的变量(也可以不写出类型名)
一般结构:
struct 结构体名//可省略
{ 成员名1;
成员名2;
......}变量名1,变量名2,......;
初始化时字符串用“”,字符用‘’。
对成员名赋值 :变量名.成员名=........;
结构体成员为字符数组时,从键盘通过scanf获取值无需使用取地址符号。普通成员须使用&符号。
结构体数组的定义:
struct 结构名{
成员表列;
}数组名[长度]={初始化表列};
定义结构体指针:
struct 类型名 *指针;
指针=&类型名;
(*p)表示的是p指向的指针变量,(*p).num代表的是结构体变量的成员num。
成员运算符“.”优于"*",*p.num等价于*(p.num)。
.运算符优先级最高。
如果p指向一个结构体变量stu,以下三种用法等价:
stu.成员名
(*p).成员名
p->成员名
二、共用体
共用体内存占用的长度等于成员表列中最长的那个,
(使用sizeof函数对其中任意定义变量求字节数都为最长者)
共用体初始化时只能有一个变量(因为每个变量占用的是同一内存单元),
且最后一次被赋值的成员的值为最终值。
结构体和共用体可以
互相嵌套;
三、枚举类型
定义:
enum 枚举名{ 成员列表(中间用逗号隔开)};
无定义的元素复赋值规则:
首元素为0,其余根据已赋值的成员左减右加。
四、typedef 可以声明新类型:
1.用新名字代替原来的名字(区别于define,#define适用于宏定义在函数之前)
2.将复杂的类型名变简单一点:
(1)命名一个新类型名代替结构体;
tyedef 结构体类型名{
成员列表;
}新类型名;
(2)数组,指针,库函数都可以换新名字使用;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~