> 编程的本质:建模
现实世界 --> 分析、建模 --> 概念模型
一. 内存管理
1. 概念
在程序中分配和释放内存资源
void *v; // 类型未知的指针变量, 指针大小都是8个字节
// 可以存储各种类型数据的地址
管理方式
- 系统管理:函数中声明的普通变量,内存空间 栈空间
由系统分配与销毁,函数中声明时分配,函数结束时销毁
- 手动管理
基于内存管理函数创建的,或全局的变量,存储在 堆空间,需要手动的销毁或释放;否则会出现内存泄漏
2. 相关函数 ,需 stdlib.h 头文件
- malloc 分配
- free 释放
- realoc 重新分配
- calloc 分配,初始化
- memcpy 内存拷贝
- memset 初始化
二. 联合 & 枚举
1. 复合数据类型
- 数组:类型相同的多个元素,顺序存储
- 字符串
- 结构体 struct:把存在逻辑关联的多个字段封装成一个整体
- 自定义、扩展出无限的数据类型
- 联合 union
- 枚举 enum
2. 联合
联合是一种特殊的数据结构,允许在相同的内存位置存储不同的数据类型。一个联合可以容纳其成员中最大的成员,但是一次只能存储一个成员的值。
联合的主要用途是节省内存空间,同时能够访问多种类型的数据。
特点:
- 所有成员共享相同的内存位置。
- 联合的大小等于其最大成员的大小。
- 同时只能访问一个成员。
例:
union unit
{
short a;
int b;
}
与结构体区别:
1. 内存结构及空间大小不同,取最大字段的大小
2. 字符的赋值,结构体多个字段的值共存,互不影响,联合的多个字段只能使用一个
3. 枚举
枚举是一种数据类型,它允许为整数值赋予更易读的名称。枚举提供了一种方式来定义命名的常量集合。
特点:
- 枚举类型定义了一组命名的整数常量。
- 枚举成员默认从0开始,依次递增。
- 可以为枚举成员指定显式的整数值。
提升代码的可读性、可扩展性
可以使用其中的多个属性
例:
enum color
{
RED,
GREEN,
BULE
};