第22讲 动态数组精选文档.ppt
《第22讲 动态数组精选文档.ppt》由会员分享,可在线阅读,更多相关《第22讲 动态数组精选文档.ppt(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第第第2222讲讲讲讲 动态数组动态数组动态数组动态数组本讲稿第一页,共十页学习方法学习方法读程序:上机单步执行(跟踪法)观察读程序:上机单步执行(跟踪法)观察程序的执行顺序以及程序中各变量的值程序的执行顺序以及程序中各变量的值的变化。或者人工模拟计算机执行,要的变化。或者人工模拟计算机执行,要手工进行计算。手工进行计算。写程序:写程序:先逐层地写算法!先逐层地写算法!再写程序!再写程序!2本讲稿第二页,共十页重要提示:重要提示:什么时候用指针:什么时候用指针:当想用指针间接引用变量的时候当想用指针间接引用变量的时候当想希望用指针提高程序效率的时候当想希望用指针提高程序效率的时候不要:不要:
2、能直接引用变量的时候不要用指针能直接引用变量的时候不要用指针能用数组名字指针数组的时候不要用指针能用数组名字指针数组的时候不要用指针3本讲稿第三页,共十页问题问题当我们处理实际问题时,如何申请空间当我们处理实际问题时,如何申请空间?int a100;/*总是有一定的浪费总是有一定的浪费*/int an;/*不合法不合法*/如何根据实际需要申请如何根据实际需要申请n个内存存放个内存存放n个个数据?数据?4本讲稿第四页,共十页四、动态分配内存四、动态分配内存?问题:如何解决根据班级实际人数来定问题:如何解决根据班级实际人数来定义数组?义数组?自己根据实际需要向系统申请内存自己根据实际需要向系统申请
3、内存如何申请呢?如何申请呢?5本讲稿第五页,共十页三个相关库函数三个相关库函数#includeinclude void void*malloc(*malloc(unsignedunsigned intint size);size);向系统申请大小为向系统申请大小为向系统申请大小为向系统申请大小为sizesize的内存块,把首地址返回。如果申的内存块,把首地址返回。如果申的内存块,把首地址返回。如果申的内存块,把首地址返回。如果申请不成功,返回请不成功,返回请不成功,返回请不成功,返回NULLNULL void void*calloc(*calloc(unsigned intunsigned i
4、nt num,num,unsigned intunsigned int size);size);向系统申请向系统申请向系统申请向系统申请numnum个个个个sizesize大小的内存块,把首地址返回。如果大小的内存块,把首地址返回。如果大小的内存块,把首地址返回。如果大小的内存块,把首地址返回。如果申请不成功,返回申请不成功,返回申请不成功,返回申请不成功,返回NULLNULL voidvoid free(free(voidvoid*p);*p);释放由释放由释放由释放由malloc()malloc()和和和和calloc()calloc()申请的内存块。申请的内存块。申请的内存块。申请的内存
5、块。p p是指向此块的是指向此块的是指向此块的是指向此块的指针指针指针指针void void*类型的指针可以指向任意类型的变量类型的指针可以指向任意类型的变量类型的指针可以指向任意类型的变量类型的指针可以指向任意类型的变量6本讲稿第六页,共十页动态数组举例动态数组举例1动态一维数组动态一维数组2动态二维数组,但看成一维数组动态二维数组,但看成一维数组3动态二维数组动态二维数组7本讲稿第七页,共十页动态一维数组动态一维数组#include#include#include#includevoid main()void main()int i,n,int i,n,*p=NULL*p=NULL;pri
6、ntf(Please enter array size:);printf(Please enter array size:);scanf(%d,&n);scanf(%d,&n);p=(int*)malloc(n*sizeof(int);/p=(int*)malloc(n*sizeof(int);/根据上边输入的人数申请内存根据上边输入的人数申请内存根据上边输入的人数申请内存根据上边输入的人数申请内存printf(please input%d intergers,n);printf(please input%d intergers,n);for(i=0;in;i+)/for(i=0;in;i+)
7、/为动态数组输入数据为动态数组输入数据为动态数组输入数据为动态数组输入数据scanf(%d,scanf(%d,&pi&pi);/);/也可以用也可以用也可以用也可以用scanf(%d,scanf(%d,p+ip+i););puts(the array is:);puts(the array is:);for(i=0;in;i+)for(i=0;in;i+)printf(%4d,pi);printf(%4d,pi);free(p);/free(p);/释放申请的内存空间释放申请的内存空间释放申请的内存空间释放申请的内存空间 8本讲稿第八页,共十页动态二维数组,但看成一维数组来处理动态二维数组,但
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第22讲 动态数组精选文档 22 动态 数组 精选 文档
限制150内