【教学课件】第7章动态组织数据.ppt
第7章 动态组织数据,动态使用空间,有如下定义:float a100;我们知道这个语句定义了一个数组,该数组中做多能够存储100个实型的数据。在内存中:a 0 1 2 3 99将分配100*sizeof(float)个字节的空间给a,而且这个空间是由a独占,别人不能分享。,是否可以想要多大的空间就要多大的空间呢?在编程的时候不少同学有过这样的经历:float an;scanf(“%d”,认为这样就可以自己随意控制数组的大小了。这样做行不行呢?,数组在定义的时候,其长度一定是一个常量。,动态存储分配函数,1 malloc()函数 函数原型 void*malloc(size_t size)功能:分配大小为size的存储空间,返回分配区域的首地址。不能分配时,返回空。,2 calloc()函数 函数原型 void*calloc(size_t n,size_t size)功能:分配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 约瑟夫环问题:约瑟夫生死游戏。,