第十四章 - DDL-Killer/The-road-of-Linxu-Group2024 GitHub Wiki
建立结构声明
- 结合声明描述了一个结构的组织布局
- 访问结构成员:使用结构成员运算符——点(.)访问结构中的成员
结构数组
声明结构数组
嵌套结构数组
指向结构的指针
声明和初始化结构指针
- struct guy * him;
- 结构名并不是结构的地址,因此要在结构名面前加上&运算符
用指针访问成员
- 指针不能用(.)点符号,指针指向的是结构名,所以可以用->
向函数传递结构的信息
传递结构成员
结构和结构指针的选择
- 指针优点:执行快;缺点:无法保护数据
- 结构优点:传递的是副本,保护了原始数据;缺点:浪费时间和存储空间
结构中的字符数组和字符指针
结构指针和malloc()
- getinfo()把用户的输入读入临时数组中,调用malloc()函数分配存储空间
- 结构体中存储的是字符串的地址,而字符串未存储在结构中
把结构内容保存到文件中
- 存储在一个结构的整套信息称为记录,单独的项被称为字段
链式结构
联合
- 联合是一种数据类型,它能在同一个内存空间中存储不同的数据类型(不是同时储存)
- 用法:设计一种表以存储既无规律、事先也不知道顺序的混合类型
- 创建联合需要一个联合模板和联合变量
使用联合
- 点运算符表示正在使用哪种数据类型
- 在联合中,一次只存储一个值
枚举类型
- 可以用枚举类型声明符号名称来表示整型常量
- 目的是提高程序的可读性
pg:enum spectrum {red,orange,yellow,green,blue,violet};
enum spectrum color; - 第一个声明创建了spetrum作为标记名,第二个声明让color作为该类型的变量
- color的值可能是red、orange等等
- 这些符号常量被称为枚举符
- 默认情况下,枚举列表中的常量都被赋予0,1,2等
- 在枚举声明中,可以为枚举常量指定整数值
共享名称空间
- C语言使用名称空间标识程序中的各部分,即通过名称来识别
- 作用域是名称空间概念的一部分:两个不同作用域的同名变量不冲突;两个相同作用域的同名变量冲突
typedef简历
- 与#define不同,typedef创建的符号名只受限于类型,不能用于值
- typedef由编译器解释,不是预处理器
- 比#define灵活
- 定义的是类型标识符,而不是简单替换
函数和指针
void show(void (* fp)(char *),char * str)