【C语言】动态内存实现通讯录(malloc,calloc,realloc)

目录

一、为什么要存在动态内存开辟

二、动态内存函数

2.1 malloc

 2.1.1 函数介绍

 2.1.2 函数的使用

 2.1.3 free

2.2 calloc

2.2.1 函数介绍

2.2.2 函数的使用

2.3 realloc

2.3.1 函数的介绍

2.3.2 函数的使用

三、改进通讯录

3.1 初始化

3.2 增加信息

3.3 排序(以姓名为标准)

3.4 销毁空间

四、源代码

4.1 contact.h(函数的声明)

4.2 contact.c(函数的实现)

4.3 test.c(测试通讯录的逻辑)

 END.


一、为什么要存在动态内存开辟

         在上篇文章实现通讯录时,我们提前开辟了能够存储1000个人信息的空间大小,当我们要存储1001个人的信息时,存不下,当我们只存储1个人的信息时,空间又会造成极大的浪费,这样的空间开辟的大小时固定的。

        所以动态的开辟内存就显得极为重要,当我们需要的空间比较小时,我们就少开辟,当我们需要的空间较大时,我们就开辟的多一点。空间的开辟会变得很灵活。

二、动态内存函数

2.1 malloc

 2.1.1 函数介绍

void *malloc( size_t size );

malloc:开辟一块内存空间

头文件:stdlib.h 或 malloc.h

返回值:开辟成功则返回一个已经分配好的空间的指针,返回值类型为void* ,如果使用其他类型的指针来接收,则需要将malloc强制类型转换。

没有开辟成功则返回NULL。

参数:需要开辟多少字节。

 2.1.2 函数的使用

 2.1.3 free

void free( void *memblock ); 

没有返回值

参数:先前分配的要释放的内存块

2.2 calloc

2.2.1 函数介绍

void *calloc( size_t num, size_t size );

calloc:在内存中分配一个数组,其中元素初始化为 0。

头文件:stdlib.h 或 malloc.h

返回值:返回一个已经分配好的空间的指针,返回值类型为void* ,如果使用其他类型的指针接收,需要将calloc强制类型转换

参数:

num : 元素数量

size : 一个元素的大小

 2.2.2 函数的使用

 

2.3 realloc

2.3.1 函数的介绍

void *realloc( void *memblock, size_t size );

realloc:重新分配内存空间(在已经开辟的空间基础上,扩展或收缩)

头文件:stdlib.h 或 malloc.h

返回值:

开辟成功有两种情况:

1.空间足够大返回原来的内存地址

2.空间不够大返回重新分配的空间的指针

 开辟失败:返回NULL 

参数:

memblock : 指向以前分配的内存块的指针

size : 新的空间需要开辟多少字节

 

2.3.2 函数的使用

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值