8.8.2 怎样建立内存的动态分配 malloc(100); 开辟100字节的临时分配域,函数值为其第1个字节的地址 注意指针的基类型为void,即不指向任何类型的数据,只提供一个地址 如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL) 8.8.2 怎样建立内存的动态分配 2.calloc函数 其函数原型为 void *calloc(unsigned n,unsigned size); 其作用是在内存的动态存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组。 8.8.2 怎样建立内存的动态分配 用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size。这就是动态数组。函数返回指向所分配域的起始位置的指针;如果分配不成功,返回NULL。如: p=calloc(50,4); 开辟50×4个字节的临时分配域,把起始地址赋给指针变量p 8.8.2 怎样建立内存的动态分配 3.free函数 其函数原型为 void free(void *p); 其作用是释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。p应是最近一次调用calloc或malloc函数时得到的函数返回值。 8.8.2 怎样建立内存的动态分配 free(p); 释放指针变量p所指向的已分配的动态空间 free函数无返回值 8.8.2 怎样建立内存的动态分配 4. realloc函数 其函数原型为 void *realloc(void *p,unsigned int size); 如果已经通过malloc函数或calloc函数获得了动态空间,想改变其大小,可以用recalloc函数重新分配。 8.8.2 怎样建立内存的动态分配 用realloc函数将p所指向的动态空间的大小改变为size。p的值不变。如果重分配不成功,返回NULL。如 realloc(p,50); 将p所指向的已分配的动态空间改为50字节 8.8.2 怎样建立内存的动态分配 以上4个函数的声明在stdlib.h头文件中,在用到这些函数时应当用“#include stdlib.h”指令把stdlib.h头文件包含到程序文件中。 8.8.3 void指针类型 例8.30 建立动态数组,输入5个学生的成绩,另外用一个函放数检查其中有无低于60分的,输出不合格的成绩。 8.8.3 void指针类型 解题思路:用malloc函数开辟一个动态自由区域,用来存5个学生的成绩,会得到这个动态域第一个字节的地址,它的基类型是void型。用一个基类型为int的指针变量p来指向动态数组的各元素,并输出它们的值。但必须先把malloc函数返回的void指针转换为整型指针,然后赋给p1 #include stdio.h #include stdlib.h int main() { void check(int *); int *p1,i; p1=(int *)malloc(5*sizeof(int)); for(i=0;i5;i++) scanf(%d,p1+i); check(p1); return 0; } void check(int *p) { int i; printf(They are fail:); for(i=0;i5;i++) if (p[i]60) printf(%d ,p[i]); printf(\n); } 8.9有关指针的小结 1.首先要准确地弄清楚指针的含义。指针就是地址,凡是出现“指针”的地方,都可以用“地址”代替,例如,变量的指针就是变量的地址,指针变量就是地址变量 要区别指针和指针变量。指针就是地址本身,而指针变量是用来存放地址的变量。 8.9有关指针的小结 2. 什么叫“指向”?地址就意味着指向,因为通过地址能找到具有该地址的对象。对于指针变量来说,把谁的地址存放在指针变量中,就说此指针变量指向谁。但应注意:只有与指针变量的基类型相同的数据的地址才能存放在相应的指针变量中。 8.9有关指针的小结 void *指针是一种特殊的指针,不指向任何类型的数据,如果需要用此地址指向某类型的数据,应先对地址进行类型转换。可以在程序中进行显式的类型转换,也可以由编译系统自动进行隐式转换。无论用哪种转换,读者必须了解要进行类型转换 8.9有关指针的小结 3. 要深入掌握在对数组的操作中怎样正确地使用指针,搞清楚指针的指向。一维数组名代表数组首元素的地址 8.9有关指针的小结 int *p,a[1
您可能关注的文档
- 第7章 图..ppt
- 第7章多媒体网络..ppt
- 第7章定性研究方法..ppt
- 第7章定时计数器..ppt
- 第7章动态电路的状态变量分析..ppt
- 第7章_图+..ppt
- 第7章指针与引用..ppt
- 第7章数组..ppt
- 第7章文件系统..ppt
- 第7章机械系统动力学..ppt
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
最近下载
- 城轨制动系统维护与检修单元一 制动基础知识.ppt VIP
- 初中语文阅读理解答题技巧的整理汇总.pdf VIP
- 铁路基本建设工程设计概(预)算编制办法(TZJ-1001-2025)(国铁科法.docx VIP
- ISO9004质量管理体系业绩改进指南「完整版」.pdf VIP
- VW60307_2019.11中文版-超声波焊接电气线路.pdf VIP
- HY∕T 0359-2023 海洋经济活动单位清查技术规范.pdf
- 2026年汽车电子水泵项目市场调研报告.pptx VIP
- 2025新酒饮行业发展报告.pdf VIP
- SL288-2026《水利工程施工监理规范》.doc VIP
- 火星探测技术进展及未来发展展望.docx VIP
原创力文档

文档评论(0)