欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    c语言教程(课件)第6章.ppt

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

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

    c语言教程(课件)第6章.ppt

    第六章 指针,地址和指针的概念,指针是C中一个重要概念,也是C的重要特色,可以有效地表示复杂的数据结构,能动态分配内存,能直接处理内存地址等。 指针的概念比较复杂,使用很灵活,不易掌握,因此要多做练习。,6-1 指针概述,地址与指针 地址与取地址运算 C语言中变量、数组、函数等都占用一定的内存空间,地址是指该内存空间的第一个字节的地址。 C语言中取地址运算符:&。 指针与指针变量 指针:就是地址,是变量的地址。 指针变量:存放变量地址的变量 。,指针的类型与指针的定义 指针所指向的对象的类型即是指针的类型。 指针的定义:只要在变量名前加“ * ”即可。 例: int * p 表示p是一个指向整型变量的指针。 注意: * 表示其后的变量是指针,指针变量是p而非*p。 指针变量一般占2个字节,用来存放一个地址。 例L6-0-1 变量、地址、指针、指针的地址。,指针变量的引用 &运算符:取地址运算。 * 运算符:指针运算(指向运算,或间接运算),*p表示p所指向的变量。 例L6-1 &与*运算符。,i1,10,&i1,p1,i2,20,&i2,p2,例L6-2 使两个指针变量交换指向。,例L6-3 交换两个指针变量所指向变量的值。,指向指针的指针 int I,*p1,*p2;,3,i,&i,p1,&p1,p2,例L6-3-2,多重指针:从理论上讲,可以有多重指针,但一般极易出错,不提倡使用多重指针。 例L6-4 多重指针。,习题5-9 统计单词与空格数。 习题5-14 字符串转换为大写、小写(数组法) 习题5-14-2 字符串转换为大写、小写(指针法),6-2 指针与数组,一维数组的指针表示 ai:下标法访问数组元素。 *(a+i):地址法访问数组元素。 (a+i表示:从数组a的首地址开始的第i个元素。) 例L6-5,ffd0,ffd2,ffd4,ffd6,ffd8,注意:,对数组a,不能用自增(减)进行运算(a+,a-),因为数组的首地址是一个常数。 虽然可用多种方法访问数组元素,效率不同,用指针访问的速度最快,它不要进行转换。 用指针访问数组时(主要是赋值),一定要记住不能越界,否则可能带来严重后果。 用指针访问数组时,因为总是从指针当前位置开始,所以要注意指针的当前值。(例L6-5的最后一次。) 例L6-6 输入若干个温度,求平均值。(用数组) 例L6-6-2 输入若干个温度,求平均值。(用指针),强调一维数组的两个结论,C中,一维数组名代表该数组的起始地址。 C中,一维数组的任何一个元素的地址,都可用其数组名加上一个偏移量来表示。 这两个结论可以推广至任意维数组都适用。,二维数组的指针表示法,二维数组a 可以看成是由以下元素构成的一个一维数组: a0,a1,a2,ai, 所以ai既是一个广义一维数组的元素,也是一个一维数组ai的名字(一维数组的首地址),所以a是指向ai起始地址的指针,因ai是一个一维数组名,即是一个一维数组的首地址,也就是指针,可见a是一个二级指针。,二维数组元素及地址的引用:例L6-7-0,例L6-7 指向数组元素的指针变量。,指向一维数组的指针,int (*)p5 :表示 P是指向一个一维数组的指针(指向该数组的首地址)。P+表示将指针移向下一个一维数组(指向其首地址)。所以可用它处理二维数组,参见例L6-8。,指针与字符串,字符串是存放在字符数组中的,因此可用指针来访问字符中的字符。 例L6-10 用三种方式输出字符串: 1、直接输出字符串数组string: printf(“%s”,string) 2、直接用指向字符串的指针p: printf(“%s”,p) 3、用指针逐个字符输出。,直接用指针表示字符串: char *p=“C Language”; 表示将字符串“C Language”存放在一连续的内存空间(以0)结束,并将指针P指向该空间的首地址。 上面的程序行也可写成两行: char *p; p=“C Language”; 例L6-12-1,指针指向的字符串与数组表示的字符串的区别,虽然: char a=“C Language”; char *p=“C Language”; 都可表示字符串,但两者概念并不相同: a表示是一个11个元素的字符数组,将C Language和0分别存入11个单元。 a 表示首地址,是一个常量,不能改变,如a+是错误的。 P只表示一个地址,指向字符串C Language的首地址。P的值的是可以改变的,如:p+表示将指针向后移一个单元。,指针数组,数组元素都是指针的数组称为指针数组,即指针数组是用来存放一批地址的。主要用来处理字符串数组,如: char *name5=“Li”, “Zhang”, “Ling”, “Sun”, “Wang” 它比用二维数组要节约内存空间(参见P195、196的两个图)。 例L6-13在一批字符串中查找指定字符串。,指针数组举例,例L6-15 用二级指针表示二维数组,对三个字符串排升序。 例L6-16 用二级指针表示二维数组,输出数组元素。,6-3 指针与函数,主要有以下三个方面: 用指针作为函数参数。 函数的返回值是指针。 指向函数的指针。,指针作为函数参数,习题5-14-2已经进行过介绍。 指针作为函数的参数时,传递的是地址,如果对地址中的值进行了修改,则修改不是临时的。 比较以下两个例子: 例L6-18 传递的是地址,且对地址中的值进行了改变,所以在主程序中的改变是当然的。 例L6-18-2 传递的是地址,没有对地址中的值进行修改,所以在主程序的不变也是当然的。,数组指针作为函数的参数,用数组与指针作为函数的参数时,实参与形参可以有以下四种组合:,例L6-21 求一维数组中下标为奇数的元素之和。,指向函数的指针,函数包括一系列的指令,在内存中也占据一片存储单元,也有一个地址,通过该地址就可找到该 函数,该地址就是该函数的指针(函数的入口地址)。 函数指针的定义: 类型 (*指针名)(); 给函数指针赋值: 指针名=函数名; 用函数指针调用函数: (*指针名)(实参) 例L6-26 用函数指针两次调用不同的函数,分别实现不同的功能。,main()函数中的参数,C语言中的main()函数也可以有参数,一般格式如下: main(int argc , char *argv ),表示命令行参数的个数,表示命令行参数数组,main()参数举例,如:C编译后的文件名为 cfile.exe 而执行时用:cfile computer language 则: argc=3 argv=“cfile”, “computer”, “language”; 例L6-30 输出用户输入的参数。,常用指针类型变量归纳,P+ (或p+=1):使p指向下一元素。 *p+:因+与*同优先级,结合方向为自右向左,所以等价于*( p+ ),先用后加,即先得到变量的值(*p),再使p加1。 *(p+) 与*(+p)不同:前者是先取*p值,后使p加1;后者是p先加1,再取*p值(下一单元的值。) (*p)+:表示p所指向的元素值加1,而不是指针加1。 如果P当前指向数组a的第 i 个元素,则: *(p-) 相当于 ai-,先对p进行*运算,再使p自减。 *(+p) 相当于 a+i,先使p自加,再作*运算。 *(-p) 相当于 a-i,先使p自减,再作*运算。,指针变量的运算小结,

    注意事项

    本文(c语言教程(课件)第6章.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开