全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
动态存储分配.txt14热情是一种巨大的力量,从心灵内部迸发而出,激励我们发挥出无穷的智慧和活力;热情是一根强大的支柱,无论面临怎样的困境,总能催生我们乐观的斗志和顽强的毅力没有热情,生命的天空就没的色彩。动态存储分配在此之前,我们用于存储数据的变量和数组都必须在说明部分进行定义。C编译程序通过定义语句了解他们所需存储空间的大小,并预先为其分配适当的空间。这些空间一经分配,在变量或数组的生存期内是固定不变的。故称这种分配方式为“静态存储分配”。C语言中还有一种称作“动态存储分配”的内存空间分配方式:在程序执行期间需要空间来存储数据时,通过“申请”分配指定的内存空间;当有闲置不用的空间时,可以随时将其释放,由系统另作它用。用户可通过调用C语言提供的标准库函数来实现动态分配,从而得到指定数目的内存空间或释放指定的内存空间。ANSI C标准为动态分配系统定义了四个函数,它们是:malloc、calloc、free和realloc。使用这些函数时,必须在程序开头包含文件stdib.h。本节只介绍malloc、calloc和free函数的使用。1、malloc函数和free函数(1)malloc函数ANSI C标准规定malloc函数返回值的类型为void *,函数的调用形式为:malloc(size)。要求size的类型为unsigned int。malloc函数用来分配size个字节的存储区,返回一个指向存储区首地址的基类型为void的地址。若没有足够的内存单元供分配,函数返回空(NULL)。假设int型数据占2字节,float型数据占4字节存储单元,以下程序段将使pi指向一个int类型的存储单元,使pf指向一个float类型的存储单元。int *pi;float *pf;pi=(int *)malloc(2);pf=(float *)malloc(4);由于在ANSI C中malloc函数返回的地址为void *(无值型),故在调用函数时,必须利用强制类型转换将其转换成所需的类型。此处括号中的*号不可少,否则就转换成普通变量类型而不是指针类型了。若有以下语句段:if(pi!=NULL) *pi=6;if(pf!=NULL) *pf=3.8;赋值后数据的存储单元情况如图7.2所示。 pi pf图7.2由动态分配得到的存储单元没有名字,只能靠指针变量来引用它。一旦指针改变指向,原存储单元及所存储数据都将无法再引用。通过调用malloc函数所分配的动态存储单元中没有确定的初值。若不能确定数据类型所占字节数,可以使用sizeof运算符来求得。例如:pi=(int *) malloc(sizeof(int);pf=(float *) malloc(sizeof(float);这是一种常用的形式。它由系统来计算指定类型的字节数。(2)free函数函数的调用形式为:free(p);这里指针变量p必须指向由动态分配函数malloc分配的地址。free函数将指针p所指的存储空间释放,使这部分空间可以由系统重新支配。此函数没有返回值。2、calloc函数ANSI C标准规定calloc函数返回值的类型为void *,函数的调用形式为:calloc(n,size);要求n和size的类型都为unsigned int。calloc函数用来给n个同一类型的数据项分配连续的存储空间。每个数据项的长度为size个字节。若分配成功,函数返回存储空间的首地址;否则返回空。由调用calloc函数所分配的存储单元,系统自动置初值0。例如:char *ps;ps=(char *)calloc(10,sizeof(char);以上函数调用语句开辟了10个连续的char类型的存储单元,由ps指向存储单元的首地址。每个存储单元可以存放一个字符。显然,使用calloc函数动态开辟的存储单元相当于开辟了一个一维数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东广州市越秀区矿泉街招聘党建工作指导员1人备考题库及答案详解(夺冠)
- 2025山东日照市莒县招聘城市社区工作者40人备考题库及答案详解(名师系列)
- 2025广东梅州蕉岭县总工会招聘工会社会工作者1人备考题库及答案详解(易错题)
- 2025内蒙古巴彦淖尔市临河区招聘社区工作者80人备考题库及答案详解一套
- 2026中国人民银行所属企业网联清算公司社会招聘备考题库含答案详解(能力提升)
- 2026交通银行秋季校园招聘若干人备考题库附答案详解(黄金题型)
- 轨迹偏差修正与校准管理细则
- 中东国家临床试验准入策略
- 2025中国建设银行广州电子银行研发中心校园招聘3人备考题库含答案详解(巩固)
- 个性化支架对气管神经功能保护的设计策略
- 掘锚护一体机操作规程及维护指南
- 委外研发管理办法
- 2025年董秘资格证上交所董秘资格考试题目及答案
- 2025年食品安全管理员考试题库及答案
- 重庆装饰装修管理办法
- 家政服务标准化操作流程
- 肥胖的危害讲课件
- 新生儿小肠坏死性结肠炎
- T/CCS 073-2023井工煤矿智能掘进系统运维管理规范
- 净菜项目可行性研究报告
- 部编版新教材三年级上册《20.古诗三首》教案(鹿柴、望天门山、饮湖上初晴后雨)
评论
0/150
提交评论