第4章-数组、指针及字符串课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章-数组、指针及字符串课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 指针 字符串 课件
- 资源描述:
-
1、C+程序设计新世纪应用型高等教育教材编审委员会 组编主编 罗烨 李秉璋第二版新世纪应用型高等教育软件专业系列规划教材第4章 数组、指针及字符串4.1 数组3数组是同类型数据的有序集合。它由若干个元素组成数组是同类型数据的有序集合。它由若干个元素组成,每个元素数据类型都相同每个元素数据类型都相同,在在内内存存中占用相同大小的存储单元。各元素具有明确的次序关系中占用相同大小的存储单元。各元素具有明确的次序关系,且在内存中连续存放。且在内存中连续存放。数组中的每一个元素都用数组名与若干个带方括号的下标表示。下标的个数表示数组中的每一个元素都用数组名与若干个带方括号的下标表示。下标的个数表示数数组的组
2、的维数维数,数组可以是一维的数组可以是一维的,也可以是多维的。数组的维数和每一维的元素个数必须在也可以是多维的。数组的维数和每一维的元素个数必须在定定义数组义数组时确定时确定,在程序运行时不能改变。在程序运行时不能改变。4.1 数组44.1.1 一维数组1.一一维数组的定义和存储方式维数组的定义和存储方式数组在使用前也必须先定义。语法格式为数组在使用前也必须先定义。语法格式为:其中其中:(1)数组元素的类型可以是数组元素的类型可以是void以外以外的任何类型。的任何类型。(2)数组名是用户自定义的标识符。在数组名是用户自定义的标识符。在C+中数组中数组名表示数组首元素在内存中的地址名表示数组首
3、元素在内存中的地址,它它是一个地址常量是一个地址常量,因此数组名不能修改因此数组名不能修改,不能作为左值出现。不能作为左值出现。(3)常量表达式的值必须常量表达式的值必须是是unsignedint类型类型的正整数或常变量的正整数或常变量,不能是变量。该值不能是变量。该值表示表示数组的大小数组的大小,亦称数组的长度亦称数组的长度,表示数组元素的个数。表示数组元素的个数。(4)是数组下标运算符是数组下标运算符,但是在数组定义时用来规定数组的长度。但是在数组定义时用来规定数组的长度。4.1 数组54.1.1 一维数组2.一一维数组的维数组的初始化初始化与定义普通变量时可以同时初始化一样与定义普通变量
4、时可以同时初始化一样,定义一个数组时也可进行初始化。例如定义一个数组时也可进行初始化。例如:intf10=0,1,1,2,3,5,8,13,21,34;以上以上f数组数组已对全部数组元素初始化已对全部数组元素初始化,也可以省略数组的长度也可以省略数组的长度,即即:intf=0,l,1,2,3,5,8,13,21,34;编译器会根据初始化值的个数自动确定数组的长度。编译器会根据初始化值的个数自动确定数组的长度。4.1 数组64.1.1 一维数组3.一一维数组元素的引用维数组元素的引用对数组元素的访问方法是通过下标运算符对数组元素的访问方法是通过下标运算符,按元素在数组中的位置进行访问按元素在数组
5、中的位置进行访问,称为称为索引索引访问访问或下标访问或下标访问,格式如下格式如下:4.1 数组74.1.2 二维数组及多维数组数组不仅有一维数组数组不仅有一维数组,还有二维、三维甚至多维数组。一维数组可用来表示向量还有二维、三维甚至多维数组。一维数组可用来表示向量,二二维维数数组可用来表示行列式或矩阵组可用来表示行列式或矩阵,例如可以用一个二维数组来存储方程组的系数矩阵。而例如可以用一个二维数组来存储方程组的系数矩阵。而像像玩具玩具魔方这样的立方体结构就需要用三维数组来表示魔方这样的立方体结构就需要用三维数组来表示。1.二二维及多维数组定义和存储方式维及多维数组定义和存储方式二维及多维数组定义
6、的语法格式为二维及多维数组定义的语法格式为:常量常量表达式表达式1为数组为数组第一维的长度第一维的长度(最高维最高维),常量表达式常量表达式2为为数组第二维的长度数组第二维的长度,常量常量表达式表达式n为为数组数组第第n维的维的长度长度(最低维最低维)。4.1 数组84.1.2 二维数组及多维数组2.二二维数组的初始化维数组的初始化对于二维数组对于二维数组,其初始化有以下几种形式其初始化有以下几种形式:(1)嵌套一维数组的初始化嵌套一维数组的初始化:int a34=1,3,5,7,2,1,6,8,3,;i,7,11;(2)按数组元素存储次序列出各元素的值,并只用一个按数组元素存储次序列出各元素
7、的值,并只用一个“”括起来,如括起来,如:int a34=1,3,5,7,2,4,6,8,3,5,7,11;(3)可以对部分元素赋初值,没有明确初值的元素可以对部分元素赋初值,没有明确初值的元素为为0。如如:int a34=1,3,2,,3,5,7;(4)可由初始化数据个数确定数组的最高维长度。如可由初始化数据个数确定数组的最高维长度。如:int a 4=1,3,5,7,2,4,6,8,3,5,7,11;4.1 数组94.1.2 二维数组及多维数组3.二维及多维数组元素的引用二维及多维数组元素的引用二维及多维数组元素的引用与一维类似,其语法形式为二维及多维数组元素的引用与一维类似,其语法形式为
8、:元素下标表达式的个数取决于数组的维数,元素下标表达式的个数取决于数组的维数,N维数组就有维数组就有N个下标表达式。二维及个下标表达式。二维及多多维维数组元素下标的起止值、下标表达式值的要求与一维数组完全相同。数组元素下标的起止值、下标表达式值的要求与一维数组完全相同。4.1 数组104.1.3 数组作为函数参数数组元素和数组名都可以作为函数的参数实现函数间数组数据的传递和共享数组元素和数组名都可以作为函数的参数实现函数间数组数据的传递和共享。由于由于数组元素和普通变量没有区别,因此当数组元素作为函数的实参时,传递给形数组元素和普通变量没有区别,因此当数组元素作为函数的实参时,传递给形参参的是
9、的是数组元素的值。数组元素的值。使用使用数组名作为函数的参数,则实参和形参都应该是数组名,且类型应相同。由于数组名作为函数的参数,则实参和形参都应该是数组名,且类型应相同。由于数组名数组名表示的是数组首元素的地址,所以函数形参得到的是实参数组首元素的地址,实参表示的是数组首元素的地址,所以函数形参得到的是实参数组首元素的地址,实参和和形参地址形参地址值相同,因此被调函数中对形参数组的处理实际上就是对主调函数的实参数组值相同,因此被调函数中对形参数组的处理实际上就是对主调函数的实参数组的处理的处理。4.1 数组114.1.3 数组作为函数参数1.一一维数组作为函数参数维数组作为函数参数4.1 数
10、组124.1.3 数组作为函数参数2.多维数组作为函数多维数组作为函数参数参数多维多维数组也可以作为函数参数。多维数组作为参数,最高维长度可以不写,但其他数组也可以作为函数参数。多维数组作为参数,最高维长度可以不写,但其他各各维必须维必须明确标出。因为编译器只要根据后面每一维明确标出。因为编译器只要根据后面每一维(从第从第2维开始维开始)的大小就可计算数组的大小就可计算数组占用空间占用空间中每一个元素的存储地址。对于多维数组,编译器不检查边界,其实只是不检查中每一个元素的存储地址。对于多维数组,编译器不检查边界,其实只是不检查最高最高维维(第第1维维)的边界。的边界。4.1 数组134.1.4
11、 数组的应用 数据排序是最常见的应用,比如对学生考试成绩进行排序,对候选人得票数排序等。数据排序是最常见的应用,比如对学生考试成绩进行排序,对候选人得票数排序等。排序排序的方法有很多种,常用的的方法有很多种,常用的有:有:冒泡法选择法插入法4.2 指针144.2.1 指针的概念指针是一种数据类型,指针类型的变量称为指针变量指针是一种数据类型,指针类型的变量称为指针变量。对变量的访问也就是对变量的存取有两种方式对变量的访问也就是对变量的存取有两种方式:1.直接访问 程序中按变量名访问变量的方式是直接访问。程序编译后,变量名和变量地址之间程序中按变量名访问变量的方式是直接访问。程序编译后,变量名和
12、变量地址之间就建立就建立了对应关系。程序中访问变量,根据对应关系,寻找到该地址,获得该变量的值了对应关系。程序中访问变量,根据对应关系,寻找到该地址,获得该变量的值。2.间接访问 变量的地址也可以放在另一个变量中,则存放该变量的地址也可以放在另一个变量中,则存放该地址的地址的变量称为指针变量。访问数变量称为指针变量。访问数据变量时,先由指针变量据变量时,先由指针变量获得获得该数据变量的地址,再由数据变量地址实现对数据该数据变量的地址,再由数据变量地址实现对数据变量的变量的存存取,这称为取,这称为“间接访问间接访问”。由于指针变量的值是另一。由于指针变量的值是另一个变量个变量的地址,习惯上形象地
13、称指针的地址,习惯上形象地称指针变量指向该变量。变量指向该变量。指针变量指针变量也简称为指针。也简称为指针。4.2 指针154.2.2 指针变量的定义指针变量的定义格式如下指针变量的定义格式如下:4.2 指针164.2.3 指针变量的初始化和运算3.指针指针的的算术运算算术运算由于由于指针变量存放的都是内存地址指针变量存放的都是内存地址,所以指针的算术运算都是整数运算所以指针的算术运算都是整数运算。一一个指针变量可以加上或减去一个整数值个指针变量可以加上或减去一个整数值,包括指针的包括指针的+、-运算运算。根据。根据C+地址运算地址运算规则规则,一个指针变量加一个指针变量加(减减)一个整数并不
14、是简单地将其地址量加一个整数并不是简单地将其地址量加(减减)一个整一个整数数,而是而是根据根据其所指的数据类型的长度其所指的数据类型的长度,计算出指针最后指向的位置。例如计算出指针最后指向的位置。例如,p+n实际实际表示的地址是表示的地址是:p指向指向的内存单元的的内存单元的地址地址+n*sizeof(指针指针指向的数据类型指向的数据类型)4.2 指针174.2.3 指针变量的初始化和运算4.指针指针的关系运算的关系运算指针可以进行关系运算。当两个指向相同类型数据的指针相等时指针可以进行关系运算。当两个指向相同类型数据的指针相等时,就说明它们就说明它们指向指向同一同一个内存单元。在程序中经常对
15、指向同一个数组的两个指针进行小于、等个内存单元。在程序中经常对指向同一个数组的两个指针进行小于、等于等各种关系于等各种关系运算。运算。和指针相减情况相同和指针相减情况相同,两个指向同类型普通变量的指针进行关系运算也没有任两个指向同类型普通变量的指针进行关系运算也没有任何意义。何意义。一个指针可以一个指针可以和和NULL作相等作相等或不等的关系运算或不等的关系运算,用来判断该指针是否为空用来判断该指针是否为空。4.2 指针184.2.4 指针作为函数参数指针作为函数的形参指针作为函数的形参,在调用时实参将地址值传递给形参在调用时实参将地址值传递给形参,使形参指针指向主调函数中使形参指针指向主调函
展开阅读全文