《【教学课件】第7章动态组织数据.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章动态组织数据.ppt(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第7章 动态组织数据动态使用空间动态使用空间有如下定义:有如下定义:float a100;我们知道这个语句定义了一个数组,该数组中做多能够我们知道这个语句定义了一个数组,该数组中做多能够存储存储100个实型的数据。个实型的数据。在内存中:在内存中:a 0 1 2 3 99将分配将分配100*sizeof(float)个字节的空间给)个字节的空间给a,而且,而且这个空间是由这个空间是由a独占,独占,别人别人不能分享不能分享。是否可以想要多大的空间就要多大的空间呢?是否可以想要多大的空间就要多大的空间呢?在编程的时候不少同学有过这样的经历:在编程的时候不少同学有过这样的经历:float an;sc
2、anf(“%d”,&n);认为这样就可以自己随意控制数组的大小了。认为这样就可以自己随意控制数组的大小了。这样做行不行呢?这样做行不行呢?数组在定义的时候,其长度一定是一个常量。数组在定义的时候,其长度一定是一个常量。动态存储分配函数动态存储分配函数1 malloc()函数函数 函数原型函数原型 void*malloc(size_t size)功能功能:分配大小为分配大小为size的存储空间,返回分配的存储空间,返回分配区域的首地址。不能分配时,返回空。区域的首地址。不能分配时,返回空。2 calloc()函数函数 函数原型函数原型 void*calloc(size_t n,size_t si
3、ze)功能:分配功能:分配n个大小为个大小为size的连续存储空间,的连续存储空间,返回分配区域的首地址,并将该区域初始化返回分配区域的首地址,并将该区域初始化为为0,不能分配时,返回空。,不能分配时,返回空。3 realloc()函数函数函数原型:函数原型:void*realloc(void*ptr,size_t newsize)功能:把由功能:把由ptr指向的已分配存储区的大小改指向的已分配存储区的大小改为为newsize。4 free()函数函数函数原型:函数原型:void free(void*ptr);功能:释放功能:释放ptr指向的内存空间。指向的内存空间。举例:举例:1 动态定义数组空间,并存放一组数据。动态定义数组空间,并存放一组数据。2 用地址不连续的空间存放上例的数据,并进用地址不连续的空间存放上例的数据,并进行插入和删除。(链表及其操作)行插入和删除。(链表及其操作)3 循环链表循环链表4 约瑟夫环问题:约瑟夫生死游戏。约瑟夫环问题:约瑟夫生死游戏。