3.1数组
同类型、同性质、按顺序存放的一组数据集合,易于批量处理。
3.1.1一维数组
- 定义
int
1.数组名为常量,指向首地址,由系统指定。
2.数组长度为整型常量,但不能为0
3.上例取值image[0]-image[255],取值可以修改。
- 初始化
int
- 输入
for
- 输出
for
3.1.2二维数组
- 定义
int
1.相比一维数组,二维数组按行存储,一行存完再存第二行,两个数字代表[行][列]。
- 初始化
int
- 输入
for
- 输出
for
3.1.3字符数组(字符串)
- 定义
char
1.系统会在字符串结尾自动补'0',数组长度N,占用内存N+1。
2.结束循环条件,实数数组不满足 i<N,字符数组不满足 str[i]!='0'。
- 初始化
char
- 输入
gets
- 输出
puts
==== 调用以下函数,声明头文件 <string.h> ====
查询
3.1.4数组应用
- 选择法排序(一维数组)
例:随机产生
- 冒泡法排序(一维数组)
例:随机产生
- 插入与删除(一维数组)
#include
- 二分法查找(一维数组)
#include
- 杨辉三角(二维数组)
#include
- 矩阵转置(二维数组)
#include
3.2结构体
一种自定义的数据类型,用来描述 逻辑上有关联 但类型、性质可能不同 的数据集合。
是由基本数据类型构造的复杂数据类型。
3.2.1结构类型声明
struct
1.结构类型声明可以嵌套定义
例
2.结构变量可以像普通变量一样使用。
3.结构体内变量名,可以和结构外的变量名相同,不代表同一对象。
3.2.2结构变量定义
- 声明时直接定义
struct
- 先声明再定义
struct
- 无类型名变量
struct
3.2.3结构变量访问
struct
- 通过变量名访问
p1
- 通过指针访问
p
1.访问结构成员:输入、输出
2.访问整体结构:利用已知结构变量向未知结构变量赋值、做函数参数
3.嵌套访问,要逐级访问,运算规则参考那一级的运算规则。
3.2.4初始化
- 结构变量初始化
struct
- 结构数组初始化
struct
3.2.5应用
- 学生成绩排序(结构数组)
#include
- 结构类型函数:24计时转变为12计时
#include
3.2.6单链表
一种数据结构,由数据和指针组成的结构体。用来表示物理存储非连续、非顺序的数组。
相比数组,链表动态存储,优点是便于插入、删除、动态扩充表大小,缺点是不能按下标存取任意元素。
- 声明
struct
- 创建(输入)
/*创建n结点链表*/
- 遍历(输出)
/*遍历n结点链表*/
- 查找(按序查找)
/*按序查找第i元素*/
- 插入(有序列表插入数据仍有序)
/*按序插入数据(升序)*/
- 删除
/*删除某数据*/
5.3 共用体 union
5.4 枚举类型 enum