总目录
前言
本文介绍以下内容:
一、动态内存分配与释放
二、 struct
三、union
四、enum
五、typedef
环境
1.VSCode
一、动态内存分配与释放
概述:动态内存分配可以在运行时为数组分配内存大小。
1.malloc和free
![](https://img.haomeiwen.com/i15438192/c1cd9edde0a351f6.png)
![](https://img.haomeiwen.com/i15438192/58066964a51089fa.png)
1.malloc函数用于内存分配,free函数用于释放内存;
2.malloc函数的参数是被分配内存的大小。
3.malloc函数分配成功返回指向被分配内存起始位置的指针,分配失败返回NULL。
4.malloc函数不能确定被分配的内存的数据类型,所以返回void *类型,即泛型指针,可以通过强制类型转换为指定类型的指针;
3.free函数的参数可以是NULL或malloc、calloc、realloc的返回值,调用free函数将会释放指针所指向的地址,若参数为NULL没有作用。
2.calloc与realloc
![](https://img.haomeiwen.com/i15438192/a76257166bfd5c63.png)
![](https://img.haomeiwen.com/i15438192/3bec6d6cc2cd572e.png)
![](https://img.haomeiwen.com/i15438192/8ba91ceb22146d30.png)
1.calloc函数也用于分配内存,realloc函数用于重新分配内存。
2.calloc函数的参数分别是元素个数和每个元素的字节数。
3.calloc函数在分配成功后,会将被分配内存的值设为0,malloc函数则不会。
4.realloc函数的参数分别是已分配内存的指针和新内存块的大小。
5.realloc函数扩大一块内存时,原先内存的内容将会保留,新增内容会保存在这些内容之后;缩小一块内存时,会丢失尾部内容,剩余内容会保留。
二、struct
struct:由一种或多种类型数据组成的组合型数据结构称为结构体。
1.结构体声明及变量定义的3种方式
方式1:先声明结构体,再定义变量
![](https://img.haomeiwen.com/i15438192/e520a2cdf6dd946e.png)
方式2:声明结构体,同时定义变量
![](https://img.haomeiwen.com/i15438192/630305cfae78926e.png)
方式3:不指定类型名,直接定义变量
![](https://img.haomeiwen.com/i15438192/89d697a2dc934aa0.png)
结构体变量所占内存大小为各成员所占内存长度之和。
2.初始化结构体的3种方式
方式1:
![](https://img.haomeiwen.com/i15438192/af49e4ed1517ca4c.png)
![](https://img.haomeiwen.com/i15438192/31c1fae75a472f27.png)
方式2:
![](https://img.haomeiwen.com/i15438192/c10a1ef2ed838336.png)
![](https://img.haomeiwen.com/i15438192/a86f00e1c895e75b.png)
方式3:
![](https://img.haomeiwen.com/i15438192/d2e8e31941cd40e3.png)
![](https://img.haomeiwen.com/i15438192/876df2462206a0c8.png)
3.结构体数组
![](https://img.haomeiwen.com/i15438192/956cd938ca5b0e5c.png)
4.结构体指针
![](https://img.haomeiwen.com/i15438192/34acb196e5e5025e.png)
![](https://img.haomeiwen.com/i15438192/0b0ecabb772c09db.png)
三、union
union:使不同变量共享同一段内存的数据结构,称为共用体。
1.共用体声明及变量定义的3种方式
方式1:先声明共用体,再定义变量
![](https://img.haomeiwen.com/i15438192/cbdccfd958c30582.png)
方式2:声明共用体,同时定义变量
![](https://img.haomeiwen.com/i15438192/bb977df63eb877b9.png)
方式3:不指定类型名,直接定义变量
![](https://img.haomeiwen.com/i15438192/497558bd5a5e2ce0.png)
2.初始化共用体的3种方式及其使用
方式1:
![](https://img.haomeiwen.com/i15438192/9b05f44f23df0d98.png)
![](https://img.haomeiwen.com/i15438192/3e9faddc5883dc12.png)
方式2:
![](https://img.haomeiwen.com/i15438192/5a1ab8b38b311ccd.png)
![](https://img.haomeiwen.com/i15438192/08e5cbb3b9f91c98.png)
方式3:
![](https://img.haomeiwen.com/i15438192/5c8961ad155db9aa.png)
![](https://img.haomeiwen.com/i15438192/6ee06e52db1ed0a0.png)
1.共用体仅使用最后一次的赋值。
2.共用体变量所占内存的长度为最长成员所占内存的长度。
3.访问共用体中不同变量只能得到相应值类型字节大小的数据返回。
四、enum
enum:把可能的值一一列出,称为枚举。
枚举的使用
![](https://img.haomeiwen.com/i15438192/d82ad5cb38f13c7f.png)
![](https://img.haomeiwen.com/i15438192/a3dfe529d7e07e92.png)
使用枚举,便于代码阅读。
五、typedef
typedef:使用指定类型名代替已有的类型名。
typedef的使用
![](https://img.haomeiwen.com/i15438192/3fedcc467c854930.png)
![](https://img.haomeiwen.com/i15438192/e2907fdcf8ac4359.png)
尾声
简单介绍C语言。
网友评论