- 1
- 0
- 约3.34千字
- 约 14页
- 2018-08-09 发布于浙江
- 举报
第7讲 态分配内存
6.2.2 返回指针值的函数 6.2.2 返回指针值的函数 6.6 指针与动态内存分配 动态数组的实现 * * * 第7讲 动态分配内存 本讲内容: (1)返回指针值的函数 (2)动态内存分配函数 (3)动态数组的实现 函数的返回值可以是一个指针类型的数据(即地址) 返回指针值函数的定义格式: 函数类型 * 函数名( 形参列表 ) { 函数体; } 说明:定义一个返回指针值的函数与定义普通函数的格式基本 类似,只是在函数名前加 * , 表明该函数返回一个指针值 例: int * fun ( int a , int b ) { 函数体 ; } 例2 求某班成绩的平均分 要求用返回指针值的函数实现 分析: 通过函数average的返回值得到保存平均分变量的地址, 进而得到平均分, 函数中将平均分变量定义成静态的, 这样函数结束后该变量仍然存在。 main p average aver1静态 aver aver1 aver1 81 void main( ) { int n; float *p; printf(input n:); scanf(%d,n); p=average(n); printf(ave=%6.2f, , *p); } 例2 程序代码 静态局部变量 float *average(int n) { int i; float s, *aver, sum=0; static float aver1; aver=aver1; for(i=1; i=n; i++) { printf(input s:); scanf(%f, s); sum=sum+s; } aver1=sum/n; return(aver); } 动态内存分配(Dynamic Memory Allocation) 在程序运行时为程序分配内存的一种方法 什么时候需要使用动态内存分配? 例: 计算某班英语成绩的平均分,要求保存每个学生的成绩,而学生人数由键盘输入 int a[60]; int n, i; scanf(%d, n); for(i=0; in; i++) scanf(%d, a[i]); 必须将数组定义的足够大! 如果输入的n较小(15),那么数组有多数以上的存储空间被浪费了 我们希望在输入n后,根据实际 的人数定义一个动态数组,这样 不会浪费存储空间 6.6.2 动态内存分配和释放函数 ANSI C标准定义了3个动态内存分配函数 1. malloc( )函数 函数原型:void *malloc( unsigned int size); 作用: 在内存开辟一个长度为 size 个字节的连续的存储空间, 返回一个指向该存储区首地址的指针,若系统不能提供足够的内存单元(分配失败), 函数将返回空指针NULL 说明: void * 是一种指针类型, 称为无类型指针, 常用来说明其基类型未知的指针, 即声明一个指针变量, 但不指定它指向哪一种具体类型的数据 需要#include stdlib.h int *p=NULL; double *q=NULL; p= (int *) malloc (4); q= (double *) malloc ( sizeof(double) ); *p=36; *q=45.8; 使用malloc函数时, 必须用强制类型转换将返回的指针值转换回所需要的数据类型, 然后再进行赋值操作 定义指针变量通常将其初始化为空指针 申请一个长度为4个字节的存储空间, 并将其首地址赋给int型的指针变量, 则该空间可存放int型数据 强制类型转换 如果不知道某种类型数据所占内存空间的字节数, 可用sizeof( )进行计算 6.6.2 动态内存分配和释放函数 int *p=NULL; double *q=NULL; p= (int *) malloc (4); q= (double *) malloc ( sizeof(double) ); *p=36; *q=45.8; 36 0NULL q 45.8 0NULL p 006.6.2 动态内存分配和释放函数 2. calloc( )函数 函数原型: void *calloc(unsigned int num,unsigned int size); 作用: 给若干同一类型的数据项分配连续的存储空间, 其中每个数据项的长度单位为字节, 若函数调用成功, 返回一个指向该存储区的首地址
您可能关注的文档
- 点击下载用于家长培训-学籍核.ppt
- 点击下载病模版-填写说明.ppt
- 点点精心点点关点点温馨Victory策划小组-----执行策划.ppt
- 烘干机定期进维护与检查.pptx
- 点火正时、前照灯、能试验台.ppt
- 焊接-职考试复习.ppt
- 焊工培训---各种焊方法介绍.ppt
- 焊接与热切割业实操考核指南.ppt
- 焊接基础理论-焊方法简介.ppt
- 焊接工艺定(改).ppt
- 销售团队业绩优化策略.docx
- 2025年河南工业和信息化职业学院单招《数学》复习提分资料附参考答案详解【完整版】.docx
- 2025年河北美术学院单招《数学》考试彩蛋押题带答案详解(培优B卷).docx
- 2025年河北青年管理干部学院单招《数学》通关考试题库带答案详解(综合题).docx
- AI在内容创作中的应用【PPT文档】.pptx
- 求职信的标准结构与有效撰写范式.docx
- 2025年河北美术学院单招《数学》复习提分资料附完整答案详解(精选题).docx
- 《曹雪芹研究》征稿启事.docx
- 2025年河北美术学院单招《数学》复习提分资料附完整答案详解(精选题).docx
- 2026年青海卫生职业技术学院单招职业技能考试题库带答案详解.docx
最近下载
- (人教版2026新教材)数学二年级下册新教材解读课件.pptx
- 松下sj-mr220中文使用说明书.pdf VIP
- 融优学堂明式家具赏析(中国美术学院)章节测验答案.docx
- 2025年铁道统计公报 .pdf VIP
- 北汽新能源EU5维修手册OBC.pptx VIP
- ISO10292-1994建筑玻璃.多层玻璃稳态U值(热透过率)的计算.PDF VIP
- 北汽新能源EU5维修手册-电路图.pdf VIP
- TCNEA-核电工程班组建设评价指南及编制说明.pdf VIP
- 基层行低利率环境对金融增加值的影响分析.pdf VIP
- 2025-2026学年小学音乐鲁教版五四学制2024一年级下册-鲁教版(五四学制)(2024)教学设计合集.docx
原创力文档

文档评论(0)