指针与二维数组ppt课件.ppt_第1页
指针与二维数组ppt课件.ppt_第2页
指针与二维数组ppt课件.ppt_第3页
指针与二维数组ppt课件.ppt_第4页
指针与二维数组ppt课件.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六节二维数组和指针 对于一维数组 1 数组名array表示数组的首地址 即array 0 的地址 2 数组名array是地址常量 3 array i是元素array i 的地址 4 array i array i 二维数组的地址 对于二维数组 1 a是数组名 包含三个元素a 0 a 1 a 2 2 每个元素a i 又是一个一维数组 包含4个元素 inta 3 基类型 行指针与列指针 4 inta 3 4 地址a 0 0a 0 1a 0 2a 0 2a 1 0a 1 1a 1 2a 1 2a 2 0a 2 1a 2 2a 2 2 对应值 a 0 0 a 0 1 a 0 2 a 0 2 a 1 0 a 1 1 a 1 2 a 1 2 a 2 0 a 2 1 a 2 2 a 2 2 对二维数组inta 3 4 有a 二维数组的首地址 即第0行的首地址a i 第i行的首地址a i a i 第i行第0列的元素地址a i j a i j 第i行第j列的元素地址 a i j a i j a i j a i a i a i a i a i 0 值相等 含义不同a i a i 表示第i行首地址 指向行a i a i a i 0 表示第i行第0列元素地址 指向列 二维数组元素表示形式 1 a 1 2 2 a 1 2 3 a 1 2 4 a 0 0 1 4 2 地址表示 1 a 1 2 a 1 0 3 a 1 4 a 1 5 int a 1 地址表示 1 a 1 2 2 a 1 2 3 a 1 2 4 a 0 0 1 4 2 例指向二维数组元素的指针变量 main staticinta 3 4 1 3 5 7 9 11 13 15 17 19 21 23 int p for p a 0 p a 0 12 p if p a 0 4 0 printf n printf 4d p p a p 指向二维数组元素的指针变量 指向一维数组的指针变量定义形式 数据类型 指针名 一维数组维数 例int p 4 不能少int p 4 与int p 4 不同 p的值是一维数组的首地址 p是行指针 可让p指向二维数组某一行如inta 3 4 p 4 a 一维数组指针变量维数和二维数组列数必须相同 例一维数组指针变量举例 main staticinta 3 4 1 3 5 7 9 11 13 15 17 19 21 23 inti j p 4 for p a i 0 i 3 i p for j 0 j 4 j printf d p j printf n p a 0 p a p p 0 j 指向指针的指针 二级指针 main inta 3 4 1 2 3 4 3 4 5 6 5 6 7 8 inti int p a for i 0 i 3 i for j 0 j 4 j printf d p i j 格式 类型名 指针名 第七节二维数组的指针作函数参数 一 形参的格式 1 用指向数组的指针变量例 fun double p N 2 用二维数组例 fun doublea N 或 fun doublea M N 3 用二级指针例 fun double p 4 用指针数组例 fun double a M 或fun double a 例3个学生各学4门课 计算总平均分 并输出第n个学生成绩 main voidaverage float p intn voidsearch float p 4 intn floatscore 3 4 65 67 79 60 80 87 90 81 90 99 100 98 average score 12 search score 2 voidaverage float p intn float p end sum 0 aver p end p n 1 for p p end p sum sum p aver sum n printf average 5 2f n aver voidsearch float p 4 intn inti printf No d n n for i 0 i 4 i printf 5 2f p n i 列指针 行指针 函数说明 floatp 4 p n i 例3个学生各学4门课 计算总平均分 并查找一门以上课不及格学生 输出其各门课成绩 p j i 输出杨辉三角形 程序见P133 11121133114641151010511615201561 分析特点是 第一列是1对角线为1从第三行开始 每数是它上面前一列和它对应列的和可用a i j a i 1 j 1 a i 1 j 表示 6 4指针与字符串字符串表示形式用字符数组实现 例main charstring IloveChina printf s n string printf s n string 7 String 7 运行结果 IloveChina China 用字符指针实现 例main char string IloveChina printf s n string string 7 while string putchar string string 字符指针初始化 把字符串首地址赋给string char string string IloveChina string 0 字符串指针作函数参数 例用函数调用实现字符串复制 1 用字符数组作参数 2 用字符指针变量作参数 voidcopy string charfrom charto inti 0 while from i 0 to i from i i to i 0 main chara Iamateacher charb Youareastudent printf string a s nstring b s n a b copy string a b printf nstring a s nstring b s n a b voidcopy string char from char to for from 0 from to to from to 0 main char a Iamateacher char b Youareastudent printf string a s nstring b s n a b copy string a b printf nstring a s nstring b s n a b 字符指针变量与字符数组char cp 与charstr 20 str由若干元素组成 每个元素放一个字符 而cp中存放字符串首地址charstr 20 str IloveChina char cp cp IloveChina str是地址常量 cp是地址变量cp接受键入字符串时 必须先开辟存储空间 例charstr 10 scanf s str 而char cp scanf s cp 改为 char cp str 10 cp str scanf s cp 字符串与数组关系字符串用一维字符数组存放字符数组具有一维数组的所有特点数组名是指向数组首地址的地址常量数组元素的引用方法可用指针法和下标法数组名作函数参数是地址传递等区别存储格式 字符串结束标志赋值方式与初始化输入输出方式 s c charstr Hello charstr Hello charstr H e l l o char cp Hello inta 1 2 3 4 5 int p 1 2 3 4 5 charstr 10 cp inta 10 p str Hello cp Hello a 1 2 3 4 5 p 1 2 3 4 5 scanf s str printf s str gets str puts str 6 5指针与函数函数指针 函数在编译时被分配的入口地址 用函数名表示 函数指针变量赋值 如p max 函数返回值的数据类型 专门存放函数入口地址可指向返回值类型相同的不同函数 指向函数的指针变量定义形式 数据类型 指针变量名 如int p 函数指针变量指向的函数必须有函数说明 函数调用形式 c max a b c p a b c p a b 对函数指针变量p n p p 无意义 不能省int p 与int p 不同 例用函数指针变量调用函数 比较两个数大小 main intmax int int inta b c scanf d d main intmax int int p inta b c p max scanf d d 用函数指针变量作函数参数 例用函数指针变量作参数 求最大值 最小值和两数之和 6 6返回指针值的函数函数定义形式 类型标识符 函数名 参数表 例int f intx inty 例指针函数实现 有若干学生成绩 要求输入学生序号后 能输出其全部成绩 main floatscore 4 60 70 80 90 56 89 67 88 34 78 90 66 float search float pointer 4 intn p inti m printf Enterthenumberofstudent scanf d 例写一个函数 求两个int型变量中居于较大值的变量的地址 2 3 2002 2000 例写一个函数 求两个int型变量中居于较大值的变量的地址 2002 例写一个函数 求两个int型变量中居于较大值的变量的地址 2 3 3 2 例写一个函数 求两个int型变量中居于较大值的变量的地址 不能返回形参或局部变量的地址作函数返回值 200A 6 7指针数组和多级指针用于处理二维数组或多个字符串指针数组定义 数组中的元素为指针变量定义形式 存储类型 数据类型 数组名 数组长度说明 例int p 4 指针所指向变量的数据类型 指针本身的存储类型 区分int p 4 与int p 4 指针数组赋值与初始化 指针数组赋值与初始化 charname 5 9 gain much stronger point bye char name 5 gain much stronger point bye 二维数组与指针数组区别 二维数组存储空间固定字符指针数组相当于可变列长的二维数组分配内存单元 数组维数 2 各字符串长度 指针数组元素的作用相当于二维数组的行名但指针数组中元素是指针变量二维数组的行名是地址常量 main intb 2 3 pb 2 inti j for i 0 i 2 i for j 0 j 3 j b i j i 1 j 1 pb 0 b 0 pb 1 b 1 for i 0 i 2 i for j 0 j 3 j pb i printf b d d 2d n i j pb i 例用指针数组处理二维数组 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp i 0 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp name 0 name 1 name 2 name 3 name 4 name GreatWall FORTRAN Computer Followme BASIC i 1 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp name 0 name 1 name 2 name 3 name 4 name GreatWall FORTRAN Computer Followme BASIC i 2 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp name 0 name 1 name 2 name 3 name 4 name GreatWall FORTRAN Computer Followme BASIC i 3 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp name 0 name 1 name 2 name 3 name 4 name GreatWall FORTRAN Computer Followme BASIC 多级指针定义 指向指针的指针一级指针 指针变量中存放目标变量的地址 例int p1 int p2 inti 3 p2 二级指针 指针变量中存放一级指针变量的地址 例int p inti 3 p 一级指针 单级间接寻址 二级指针 一级指针 目标变量 二级间接寻址 定义形式 存储类型 数据类型 指针名 如char p 例inti p p p是二级指针 不能用变量地址为其赋值 指针本身的存储类型 最终目标变量的数据类型 p是p间接指向对象的地址 p是p间接指向对象的值 例inti 3 int p1 int p2 p1 多级指针 例三级指针int p 四级指针char p 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 2000 2002 2000 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 输出 1 2 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 输出 1 2 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 2000 2002 2000 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 2000 2002 输出 2 1 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 输出 2 1 例用二级指针处理字符串 defineNULL0voidmain char p char name hello good world

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论