欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第22讲 动态数组精选文档.ppt

    • 资源ID:44693223       资源大小:743.50KB        全文页数:10页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第22讲 动态数组精选文档.ppt

    第第第第2222讲讲讲讲 动态数组动态数组动态数组动态数组本讲稿第一页,共十页学习方法学习方法读程序:上机单步执行(跟踪法)观察读程序:上机单步执行(跟踪法)观察程序的执行顺序以及程序中各变量的值程序的执行顺序以及程序中各变量的值的变化。或者人工模拟计算机执行,要的变化。或者人工模拟计算机执行,要手工进行计算。手工进行计算。写程序:写程序:先逐层地写算法!先逐层地写算法!再写程序!再写程序!2本讲稿第二页,共十页重要提示:重要提示:什么时候用指针:什么时候用指针:当想用指针间接引用变量的时候当想用指针间接引用变量的时候当想希望用指针提高程序效率的时候当想希望用指针提高程序效率的时候不要:不要:能直接引用变量的时候不要用指针能直接引用变量的时候不要用指针能用数组名字指针数组的时候不要用指针能用数组名字指针数组的时候不要用指针3本讲稿第三页,共十页问题问题当我们处理实际问题时,如何申请空间当我们处理实际问题时,如何申请空间?int a100;/*总是有一定的浪费总是有一定的浪费*/int an;/*不合法不合法*/如何根据实际需要申请如何根据实际需要申请n个内存存放个内存存放n个个数据?数据?4本讲稿第四页,共十页四、动态分配内存四、动态分配内存?问题:如何解决根据班级实际人数来定问题:如何解决根据班级实际人数来定义数组?义数组?自己根据实际需要向系统申请内存自己根据实际需要向系统申请内存如何申请呢?如何申请呢?5本讲稿第五页,共十页三个相关库函数三个相关库函数#includeinclude void void*malloc(*malloc(unsignedunsigned intint size);size);向系统申请大小为向系统申请大小为向系统申请大小为向系统申请大小为sizesize的内存块,把首地址返回。如果申的内存块,把首地址返回。如果申的内存块,把首地址返回。如果申的内存块,把首地址返回。如果申请不成功,返回请不成功,返回请不成功,返回请不成功,返回NULLNULL void void*calloc(*calloc(unsigned intunsigned int num,num,unsigned intunsigned int size);size);向系统申请向系统申请向系统申请向系统申请numnum个个个个sizesize大小的内存块,把首地址返回。如果大小的内存块,把首地址返回。如果大小的内存块,把首地址返回。如果大小的内存块,把首地址返回。如果申请不成功,返回申请不成功,返回申请不成功,返回申请不成功,返回NULLNULL voidvoid free(free(voidvoid*p);*p);释放由释放由释放由释放由malloc()malloc()和和和和calloc()calloc()申请的内存块。申请的内存块。申请的内存块。申请的内存块。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;printf(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+)/为动态数组输入数据为动态数组输入数据为动态数组输入数据为动态数组输入数据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本讲稿第八页,共十页动态二维数组,但看成一维数组来处理动态二维数组,但看成一维数组来处理(通过列地址引用二维数组元素通过列地址引用二维数组元素)#include#include#include#includevoid main()void main()int i,j,m,n,*p=NULL;int i,j,m,n,*p=NULL;printf(Please enter size of row:);printf(Please enter size of row:);scanf(%d,&m);scanf(%d,&m);printf(Please enter size of line:);printf(Please enter size of line:);scanf(%d,&n);scanf(%d,&n);p=(int*)calloc(n*m,sizeof(int);p=(int*)calloc(n*m,sizeof(int);/根据前边输入的行、列宽度申请内存空间根据前边输入的行、列宽度申请内存空间根据前边输入的行、列宽度申请内存空间根据前边输入的行、列宽度申请内存空间printf(please input%d intergers,m*n);printf(please input%d intergers,m*n);for(i=0;im;i+)for(i=0;im;i+)for(j=0;jn;j+)for(j=0;jn;j+)scanf(%d,scanf(%d,&pi*n+j&pi*n+j););/为二维数组输入数据,但使用的是一维数组的引用形式为二维数组输入数据,但使用的是一维数组的引用形式为二维数组输入数据,但使用的是一维数组的引用形式为二维数组输入数据,但使用的是一维数组的引用形式puts(the array is:);puts(the array is:);for(i=0;im;i+)for(i=0;im;i+)for(j=0;jn;j+)for(j=0;jn;j+)printf(%4d,pi*n+j);printf(%4d,pi*n+j);putchar(n);putchar(n);free(p);/free(p);/释放释放释放释放申请的内存空间申请的内存空间申请的内存空间申请的内存空间 9本讲稿第九页,共十页#include#include#include#includevoid main()void main()int i,j,m,n,*p=NULL,*Parray=NULL;int i,j,m,n,*p=NULL,*Parray=NULL;printf(Please enter size of row:);printf(Please enter size of row:);scanf(%d,&m);scanf(%d,&m);printf(Please enter size of line:);printf(Please enter size of line:);scanf(%d,&n);scanf(%d,&n);p=(int*)calloc(m,n*sizeof(int);/p=(int*)calloc(m,n*sizeof(int);/根据前边输入的行、列宽度申请内存空间根据前边输入的行、列宽度申请内存空间根据前边输入的行、列宽度申请内存空间根据前边输入的行、列宽度申请内存空间Parray=(int*)calloc(m,sizeof(int*);/Parray=(int*)calloc(m,sizeof(int*);/根据前边输入的行宽度申请一个指针数组要用的内存空间根据前边输入的行宽度申请一个指针数组要用的内存空间根据前边输入的行宽度申请一个指针数组要用的内存空间根据前边输入的行宽度申请一个指针数组要用的内存空间 for(i=0;im;i+)/for(i=0;im;i+)/指针数组中存储二维数组每一行的首个元素的地址指针数组中存储二维数组每一行的首个元素的地址指针数组中存储二维数组每一行的首个元素的地址指针数组中存储二维数组每一行的首个元素的地址(列地址列地址列地址列地址)Parrayi=p+i*n;Parrayi=p+i*n;printf(please input%d intergers,m*n);printf(please input%d intergers,m*n);for(i=0;im;i+)for(i=0;im;i+)for(j=0;jn;j+)for(j=0;jn;j+)scanf(%d,scanf(%d,(*(Parray+i)+j(*(Parray+i)+j);/);/为二维数组输入元素。指针数据名就相当于二维数组名为二维数组输入元素。指针数据名就相当于二维数组名为二维数组输入元素。指针数据名就相当于二维数组名为二维数组输入元素。指针数据名就相当于二维数组名puts(the array is:);puts(the array is:);for(i=0;im;i+)for(i=0;im;i+)for(j=0;jn;j+)for(j=0;jn;j+)printf(%4d,printf(%4d,ParrayijParrayij););putchar(n);putchar(n);free(p);/free(p);/释放内存空间释放内存空间释放内存空间释放内存空间free(Parray)free(Parray);动态二维数组动态二维数组(通过行地址引用二通过行地址引用二维数组元素维数组元素)P P列地址列地址列地址列地址ParrayParray行地址行地址行地址行地址&P0&P31 2 34 5 610本讲稿第十页,共十页

    注意事项

    本文(第22讲 动态数组精选文档.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开