ImageVerifierCode 换一换
格式:PPT , 页数:24 ,大小:106.50KB ,
文档编号:4603619      下载积分:22 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-4603619.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(程序设计基础ch5课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

程序设计基础ch5课件.ppt

1、2022-12-24程序设计基础 张杰敏1第5章 指针与数组n学习目标u理解指针、地址和数组的概念u学会使用数组和字符数组u学会指针运算的方法和技巧u学会指针作为函数参数的用法u理解函数的指针和返回指针值的函数u了解指针与二维数组配合的编程方法u了解“指针的指针”的定义n指针是一种用于存放另一个变量的地址的变量 n优点是:可以生成更高效、更紧凑的代码;有效地表示复杂的数据结构;动态分配内存;得到多于一个的函数返回值 2022-12-24程序设计基础 张杰敏25.1 指针与地址(1)n内存单元的编号也叫做地址 n通常也把存放地址的变量称为指针或指针变量n对于一个内存单元来说,单元的地址(编号)即

2、为指针变量的值,单元的内容是其中存放的数据 2022-12-24程序设计基础 张杰敏35.1 指针与地址()n指针变量的说明包括类型说明、指针变量名和指针所指向的变量的数据类型三个内容,其一般语法形式为:类型说明符*变量名 其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型 n例如:int*p1;表示p1是一个指针变量,它的值是某个整型变量的地址 nC语言中提供了地址运算符&来表示变量的地址。其一般语法形式为:&变量名如&a变示变量a的地址,&b表示变量b的地址。变量本身必须预先说明 n取内容运算的一般语法形式是:*地址这里“地址”可以是指

3、针变量名、数组名或表示地址的整型表达式 2022-12-24程序设计基础 张杰敏45.1 指针与地址()n两个指针在一定条件下可以进行比较。如果两个指针p和q指向同一数组,则它们可以进行,、和!等比较运算。例如:npq若指针p指向的位置位于指针q指向的位置之前,则其值为真;反之则为假np=q若指针p和q都指向同一个变量,则其值为真;否则为假np=0若指针p为一个空指针,则其值为真;反之为假np!=0若指针p不是空指针,则其值为真,反之为假 2022-12-24程序设计基础 张杰敏55.2 指针算术运算n对指针来说,有加,减两种算术运算,可用的算术运算符有:+,-,+,-,+=和-=n运算规则如

4、下:指针的算术运算是根据其类型的长度确定增减量来进行。由于地址计算与其相应数据类型占字节数有关,故指针的增减量,根据其类型的长度确定。+(-):指针增运算,即指针向前移动一个数据的位置,指向的新地址为 原地址+(-)sizeof(类型说明符).如设:int*p=&k;则若k的地址为2000,p+以后P的值变为2002,而非2001。p每增一次,就将指针指向后一个整数(两个字节),P-后为1998而非1999.+(-):指针变量加(减)正整数n,即表示指针向后(前)移动n个数据,使该指针所指向的地址为原地址+(-)sizcof(类型说明符)*n。如:p=p+5;之后p值为 2000+5*2=20

5、10。.说明:指针仅能做以上几种算术运算,除此之外的运算即是非法的 2022-12-24程序设计基础 张杰敏65.3 指针与函数参数n函数调用过程中有传值和传址两种参数传递方法 n指针作为函数参数,使得函数的调用灵活、高效 n指针与函数参数的配合使用,常见有三种:函数的参数为指针型、函数的返回值为指针型函数指针(指针的基本类型为函数)举例说明2022-12-24程序设计基础 张杰敏75.4 数 组()n在计算机高级语言中,把具有同一名字,互相有联系且按一定顺序排列的变量称为数组n数组中的每一变量都用不同的下标来区别,称为数组元素,0作为第一个元素的下标 n需要使用数组时,先要进行定义,然后才能

6、使用 2022-12-24程序设计基础 张杰敏85.4 数 组()n一维数组的说明格式。一般语法形式为:类型 变量名长度类型是指数据类型,即每一个数组元素的数据类型,包括整数型、浮点型、字符型、指针型以及后面要讲述的结构和联合 n一维数组的初始化赋值的一般语法形式为:类型说明符 数组名常量表达式=值,值值语言规定定义数组的同时可作初始化赋值。在 中的各数据值即为各元素的初值,各值之间用逗号间隔 n一维数组的引用。C语言规定只能逐个引用数组元素而不能一次引用整个数组。数组元素的表示形式为数组名下标2022-12-24程序设计基础 张杰敏95.4 数 组()n用来存放字符数据的数组是字符数组。字符

7、数组中的一个元素存放一个字符。几点需要说明:要区别“字符”和“字符串”,字符变量或字符数组的一个元素只能存放一个字符,用单引号引起来 C语言规定了一个“字符串结束标志”,以字符0代表 字符数组的输入/输出方式除了逐个元素(字符)输入输出外,还可以用”%s”格式符整体输入/输出 输出字符不包括结束符0 2022-12-24程序设计基础 张杰敏105.4 数 组()n二维数组的定义。一般语法形式为:类型说明符 数组名常量表达式常量表达式n二维数组的理解:可以把二维数组看成是一个一维数组,这个一维数组的每个元素又是一维数组n二维数组的元素在内存中的存放循序。按行存放 n二维数组中元素的引用。用数组名

8、和下标引用元素 n二维数组的初始化 n多维数组的一般语法形式为:类型 数组名第n维长度第n-1维长度.第1维长度2022-12-24程序设计基础 张杰敏115.5 数组的指针n指向一个数组的指针称为数组指针,可把数组名或第一个元素的地址赋予它 n一个指针变量既可以指向一个数组,也可以指向一个数组元素,如果指针指向了数组,也就是指向了数组的第一个元素(首地址)n当使指针p指向数组a后,可以用指针p访问数组的各个元素 n指针和数组在访问内存地址中的数据时,其表达形式具有相同意义。但指针与数组名具有本质上的不同,数组名是地址,也可理解为指针常量,而指针是地址变量。指针在使用前必须先赋予一定的地址值

9、指针用指针取值元素p *(p+0)a0p+1*(p+1)a1p+2*(p+2)a2p+i*(p+i)aip+9*(p+9)a9指针引用数组元素2022-12-24程序设计基础 张杰敏125.6 字符串的指针n字符串的指针,又称字符指针,本身是一个变量,用于存放字符串的首地址n字符串本身是存放在以该首地址为首的一块连续的内存空间中并以0作为串的结束 n字符串虽然是字符数组,但是字符数组和字符指针的概念不同,用字符串指针方式与字符数组方式使用字符串时是有区别的,两者的意义如图 n初始化赋值 字符串指针方式:char *ps;ps=Student personnel file;对数组方式:char

10、st=Student personnel file;2022-12-24程序设计基础 张杰敏135.7 指针数组(1)n指针数组是一个数组,该数组中的每一个元素是指针变量。其一般语法形式为:类型标识符*数组名数组元素个数例如:int*p4;定义了一个指针数组,数组名p,有4个元素,每一个元素是指向整型变量的指针 int(*p)4;/*指向数组的指针*/这句定义一个指针变量,它指向有4个元素的一维数组 2022-12-24程序设计基础 张杰敏145.7 指针数组(2)n指针数组主要用于处理多个字符串。字符串本身是一维数组,多个字符串可以用二维数组来处理,但会浪费许多内存。用指针数组处理多个字符串

11、,不会浪费内存。n如要将7个国名并按字母顺序排列后输出,一种方法是采用普通的排序方法,逐个比较之后交换字符串的位置。交换字符串的物理位置是通过字符串复制函数完成的。反复的交换将使程序执行的速度很慢,同时由于各字符串(国名)的长度不同,又增加了存储管理的负担。另一种较好的方法是使用指针数组,排序前后指针的指向情况见图。把所有的字符串存放在一个数组中,把这些字符数组的首地址放在一个指针数组中,当需要交换两个字符串时,只须交换指针数组相应两元素的内容(地址)即可,而不必交换字符串本身。下图为排序前后示意图:2022-12-24程序设计基础 张杰敏155.8*指针的指针n指向指针的指针变量说明的一般语

12、法形式为:类型说明符*指针变量名;n例如:右图首先定义说明了指针数组ps并作了初始化赋值。又说明了pps是一个指向指针的指针变量。在5次循环中,pps 分别取得了ps0,ps1,ps2,ps3,ps4的地址值(如图5-10所示)。再通过这些地址即可找到该字符串 2022-12-24程序设计基础 张杰敏165.9 指针与多维数组(1)n简单指针变量引用多维数组的元素n一般地,若需访问二维数组anm(n行m列)的某个元素aij,计算该元素的相对位置公式为:i*m+j(i,j=0,1,2,.)相当于把二维数组转化为一维数组来使用 如:int a3,4=1,3,5,7,9,11,13,15,17,19

13、,21,23;int a12=1,3,5,7,9,11,13,15,17,19,21,23;引用时使用a13和a7都是指第8号元素,这里即152022-12-24程序设计基础 张杰敏175.9 指针与多维数组(2)n通过指针数组引用多维数组元素n对于二维数组可以为其中每个一维数组(每行),设一个指针。也可设一个指针数组,这个指针数组的每一个指针指向二维数组中的每个一维数组n如:int a34=1,3,5,7,9,11,13,15,17,19,21,23;int*pa3=a0,a1,a2;/*将3行的首地址赋给指针数组*/这时的pa2+1就指向a21,即整型数19 2022-12-24程序设计基

14、础 张杰敏185.9 指针与多维数组(3)n通过二维数组的数组名表达式引用多维数组的元素n二维数组的数组名代表该数组的首地址,相当于一个指针常量 n二维数组中各一维数组名也是一个指针常量,代表一维数组的首地址。若a的首地址为2000,则右图可以清楚底说明数组名作为指针常量的引用情况 n已知某元素的指针后,可以用*运算符访问该元素。只需在*()内写入含数组名的地址表达式,就可以引用数组元素 a0+1a0+2a0+3a0+1a0+2a0+32022-12-24程序设计基础 张杰敏195.9 指针与多维数组(4)n使用指向二维数组的指针变量n二维数组指针变量说明的一般语法形式为:类型说明符 (*指针

15、变量名)长度n其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数 n设p为指向二维数组的指针变量,把二维数组a34分解为一维数组a0,a1,a2之后,可定义为:int(*p)4;它表示p是一个指针变量,它指向二维数组a 或指向第一个一维数组a0,其值等于a,a0,或&a00等。而p+i则指向一维数组ai。从前面的分析可得出*(p+i)+j是二维数组i行j 列的元素的地址,而*(*(p+i)+j)则是i行j列元素的值 2022-12-24程序设计基础 张杰敏205.10 指针与函数(1)n函数的参

16、数为指针 n用指针作函数参数,其作用是将一个变量的地址送到被调用函数之中,由此,被调用函数可以操作外部变量或主调出函数定义的变量单元 n举例说明2022-12-24程序设计基础 张杰敏215.10 指针与函数(2)n函数的返回值为指针 n在C语言中允许一个函数的返回值是一个指针(即地址)。函数的返回值为指针型时,该函数常被称为指针型函数。定义指针型函数的一般语法形式为:存储类型 数据类型*函数名(形参表)/*函数体*/其中函数名之前加了“*”号表明这是一个指针型函数,即返回值是一个指针。存储类型是指该函数本身的存储特性,一般分为缺省存储类型和static型。数据类型说明符表示了返回的指针值所指

17、向的数据类型 n举例说明2022-12-24程序设计基础 张杰敏225.10 指针与函数(3)n指向函数的指针 n在C语言中规定,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数,然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为函数指针变量或函数(型)指针。n函数指针定义和说明的一般语法形式;存储类型 数据类型(*函数指针名)();其中,存储类型是指函数指针本身的存储特性,而数据类型是指针所指向的函数的数据类型n函数指针主要用于在函数间传递函数 2022-12-24程序设计基础 张杰敏235.11 编程指导n常使用符号常量是一个好习惯 n一种常用的重要风格是对程序进行结构化,用一个函数来完成一个基本任务,这种作法是结构化编程的核心 n指针变量前面字母一般为p或ptr,这样可以清楚地标示这些变量是指针 n对频繁访问的函数中的动态数组,可以声明为static。这样不会在每次调用函数时都初始化数组,而每次退出时也不会破坏数组2022-12-24程序设计基础 张杰敏24本章小结

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|