欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《善于使用指针》PPT课件.ppt

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

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

    《善于使用指针》PPT课件.ppt

    8.1 什么是指针8.2 指针变量8.3 通过指针引用数组8.4 通过指针引用字符串8.5 提高部分,第8章 善于使用指针,P210,8.1 什么是指针,在定义变量时,系统就给这个变量分配内存单元。编译系统根据程序中定义的变量类型,分配一定长度的空间。,P210,8.1 什么是指针,内存区的每一个字节有一个编号,这就是内存单元的“地址”在地址所标志的内存单元中存放数据。,P210,由于通过地址能找到所需的变量单元,我们可以说,地址指向该变量单元。在C语言中,将地址形象化地称为“指针”。意思是通过它能找到以它为地址的内存单元。,8.1 什么是指针,P210,int a,b;,a,b,2000,2004,a=3;,3,直接访问,8.1 什么是指针,P210,int a;,3,a,a_pointer,2000,a_pointer=,间接访问,定义特殊变量a_pointer,2000,通过a_pointer取值,8.1 什么是指针,P210,为了表示将数值送到变量中,可以有两种表达方法:(1)将3直接送到变量a所代表的单元中(2)将3送到变量a_pointer所指向的单元(即a所代表的存储单元),指向就是通过地址来体现的假设a_pointer中的值是变量a的地址(2000),这样就在a_pointer和变量a之间建立起一种联系,即通过a_pointer能知道a的地址,从而找到变量a的内存单元,一个变量的地址称为该变量的“指针”例如,地址2000是变量i的指针如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”a_pointer就是一个指针变量。指针变量就是地址变量,用来存放地址的变量,指针变量的值是地址(即指针),“指针”和“指针变量”是不同的概念可以说变量a的指针是2000,而不能说a的指针变量是2000指针是一个地址,而指针变量是存放地址的变量常常将指针变量简称为指针,8.2 指针变量,8.2.1 使用指针变量访问变量的例子8.2.2 怎样定义指针变量8.2.3 怎样引用指针变量8.2.4 指针变量作为函数参数,P211,8.2.1 使用指针变量访问变量的例子,例8.1 通过指针变量访问整型变量。,P211,8.2.2 怎样定义指针变量,P212,定义指针变量的一般形式为:类型*指针变量名;如:int*p1,*p2;int是为指针变量指定的“基类型”基类型指定指针变量可指向的变量类型如pointer_1可以指向整型变量,但不能指向浮点型变量,8.2.2 怎样定义指针变量,P212,下面都是合法的定义和初始化:float*pointer_3;char*pointer_4;int a,b;int*pointer_1=,8.2.3 怎样引用指针变量,P214,在引用指针变量时,可能有三种情况:给指针变量赋值。如:p=,使p指向a,*p相当于a,以十六进制输出a的地址,8.2.3 怎样引用指针变量,P214,要熟练掌握两个有关的运算符:(1)取地址运算符。(把1赋给a),8.2.4 指针变量作为函数参数,P215,例8.3 利用函数交换两个整数的值。,8.3 通过指针引用数组,P220,8.3.1 数组元素的指针8.3.2 通过指针引用数组元素8.3.3 用数组名作函数参数,8.3.1 数组元素的指针,P220,一个变量有地址,一个数组包含若干元素,每个数组元素都有相应的地址指针变量可以指向数组元素(把某一元素的地址放到一个指针变量中)所谓数组元素的指针就是数组元素的地址,可以用一个指针变量指向一个数组元素 int a10=1,3,5,7,9,11,13,15,17,19;int*p;p=,等价于p=a;,等价于int*p=a;或int*p=,注意:数组名a不代表整个数组,只代表数组首元素的地址。“p=a;”的作用是“把a数组的首元素的地址赋给指针变量p”,而不是“把数组a各元素的值赋给p”。,8.3.2 通过指针引用数组元素,引用数组元素,可用下面两种方法:(1)下标法,用数组名加下标 如ai(2)指针法,即地址法。*(a+i)或*(p+i)(其中初值p=a),P221,指针运算:通过指针的运算,可以方便地引用数组中的元素。,(1)如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素,p-1指向同一数组中的上一个元素。float a10,*p=a;假设a0的地址为2000,则p的值为2000p+1的值为2004,(2)如果p的初值为&a0,则p+i和a+i就是数组元素ai的地址,或者说,它们指向a数组序号为i的元素,p,p+1,a+1,p+i,a+i,p+9,a+9,(3)*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即ai。,p,p+1,a+1,p+i,a+i,p+9,a+9,*(p+i),(4)如果指针p1和p2都指向同一数组 p2-p1的值是4 不能p1+p2,p1,p2,8.3.3 用数组名作函数参数,P224,用数组名作函数参数时,因为实参数组名代表该数组首元素的地址,形参应该是一个指针变量C编译都是将形参数组名作为指针变量来处理的,void fun(int arr,int n)void main()void fun(int arr,int n;int array10;fun(array,10);,fun(int*arr,int n),void fun(int arr,int n)void main()void fun(int arr,int n;int array10;fun(array,10);,array0,arr0,array数组,arr,array3,arr3,arr+3,实参数组名是指针常量,但形参数组名是按指针变量处理在函数调用进行虚实结合后,它的值就是实参数组首元素的地址在函数执行期间,形参数组可以再被赋值void fun(arr,int n)printf(%dn,*arr);arr=arr+3;printf(%dn,*arr);,8.4 通过指针引用字符串,8.4.1 字符串的表示形式 字符指针作函数参数8.4.3 对使用字符指针变量和字符数组的讨论,P229,8.4.1 字符串的表示形式,可以用两种方法访问一个字符串:(1)用字符数组存放一个字符串,然后用字符数组名和下标可以访问字符数组中的元素,也可以通过字符数组名用%s格式符输出一个字符串。(2)用字符指针指向一个字符串。可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。,P229,例8.10 定义字符指针,使它指向一个字符串。#include void main()char*string=I love China!;printf(%sn,string);,string,字符指针作函数参数,如果想把一个字符串从一个函数“传递”到另一个函数,可以用地址传递的办法,即用字符数组名作参数,也可以用字符指针变量作参数。在被调用的函数中可以改变字符串的内容在主调函数中可以引用改变后的字符串,P233,8.5 提高部分,8.5.1 指针使用的技巧8.5.2 多维数组的指针8.5.3 指向函数的指针8.5.4 返回指针值的函数8.5.5 指针数组8.5.6 多重指针指向指针的指针,P239,8.5.1 指针使用的技巧,P239,void copy_string(char*from,char*to)for(;*from!=0;from+,to+)*to=*from;*to=0;,while(*to=*from)!=0)to+;from+;,8.5.1 指针使用的技巧,P239,void copy_string(char*from,char*to)while(*to=*from)!=0)to+;from+;,while(*to+=*from+)!=0);,8.5.1 指针使用的技巧,P239,void copy_string(char*from,char*to)while(*to=*from)!=0)to+;from+;,while(*from!=0)*to+;*from+;,8.5.1 指针使用的技巧,P239,void copy_string(char*from,char*to)while(*from!=0)*to+;*from+;,while(*from),8.5.1 指针使用的技巧,P239,void copy_string(char*from,char*to)while(*to+=*from+);,for(;(*to+=*from+););,8.5.2 多维数组的指针,指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。,P240,int a34=1,3,5,7,9,11,13,15,17,19,21,23;,a,a+1,a+2,int(*p)4;,指向一维数组的指针变量,p=a+1;,p指向a1行的开头,8.5.3 指向函数的指针,如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址,称为这个函数的指针。,P241,8.5.3 指向函数的指针,可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该函数。例如:int(*p)(int,int);定义p是指向函数的指针变量,它可以指向的函数类型为整型且有两个整型形参,P241,8.5.3 指向函数的指针,定义的一般形式为:数据类型(*指针变量名)(函数参数表列);如果要用指针调用函数,必须先使指针变量指向该函数。如:p=max;把max函数的入口地址赋给指针变量p,P241,8.5.3 指向函数的指针,调用函数时,只需将(*p)代替函数名即可。例如:c=(*p)(a,b);相当于:c=max(a,b);指向函数的指针变量的一个重要用途是把函数的入口地址作为实参传递给形参,此时形参是指向函数的指针变量。这样就能够在被调用的函数中使用实参函数,P241,8.5.4 返回指针值的函数,一个函数也可以返回指针型的数据。例如:int*a(int x,int y);a是函数名,*表示此函数值是指针。最前面的int表示返回的指针是指向整型变量的。调用它以后能得到一个指向整型数据的指针(地址)。,P242,8.5.4 返回指针值的函数,返回指针值的函数一般定义形式为 类型名*函数名(参数表列);这种形式与定义指向函数的指针变量很相似,但请注意:在*a两侧没有括号。有括号就成指向函数的指针变量了。,P242,8.5.5 指针数组,一个数组,若其元素均为指针类型数据,称为指针数组。例如:int*p4;p是数组,有4个元素*表示此数组是指针类型的,每个数组元素(相当于一个指针变量)都可指向一个整型变量。,P242,8.5.5 指针数组,一维指针数组的定义的一般形式为 类型名数组名数组长度;,P242,8.5.5 指针数组,指针数组比较适合用来指向若干个字符串,使字符串处理更加方便灵活可以分别定义一些字符串,然后用指针数组中的元素分别指向各字符串由于各字符串长度一般是不相等的,所以比用二维数组节省内存单元,P242,8.5.5 指针数组,图书馆有若干本书,想把书名放在一个数组中,然后要对这些书目进行排序和查询,P242,8.5.5 指针数组,图书馆有若干本书,想把书名放在一个数组中,然后要对这些书目进行排序和查询,P242,8.5.6 多重指针指向指针的指针,指向另一个指针数据的指针变量,称为指向指针的指针。,P243,name,8.5.6 多重指针指向指针的指针,char*p;,P243,name,p,p=name+2;,

    注意事项

    本文(《善于使用指针》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开