ch10(3) 指针_第1页
ch10(3) 指针_第2页
ch10(3) 指针_第3页
ch10(3) 指针_第4页
ch10(3) 指针_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

C语言 第二十六讲 主讲教师 谢本亮 数组作为函数参数 实参和形参的对应关系可归纳以下四种情况 intf intx intn voidmain inta 10 f a 10 intf int x intn voidmain inta 10 f a 10 intf int x intn voidmain inta 10 p a f p 10 intf intx intn voidmain inta 10 p a f p 10 三 数组的指针与函数参数 二 指针的运算 一 一维数组与指针 10 3指针和数组 例10 9 编写一函数求一维数组的最大元素及其下标位置 要求使用指针 已知 数组首地址p 元素个数n 结果 下标k 作为函数参数 作为返回值 intmax int p intn 设最大值放在max中 则初始状态为 max p k 0 如果 p i max则max p i 且k i includeintmax array int p intn intk 0 max p i for i 0 imax max p i k i returnk voidmain inta 10 23 43 52 23 5 22 33 35 96 34 inti p a k for i 0 i 10 i printf 5d p i k max array a 10 printf nmax a d d n k p k max a 8 96 此时的指针变量p变化吗 max a 8 96 例10 10 编写一函数求一维数组的元素倒置存放 已知 一维数组 元素个数 结果 倒置后得一维数组 函数定义 voidinverse inta intn 或voidinverse int p intn 算法 1 令p指向数组得开始 q指向结束 2 交换两单元得内容 3 两指针向中间靠拢 4 重复上述2 3 直到p q includevoidinverse int p intn int q t q p n 1 while p q t p p q q t p q voidmain inta 1 3 5 7 9 intk p for p a k 0 k 5 k printf 4d p puts inverse a 5 for p a k 0 k 5 k printf 4d p puts 357997531 voidinverse inta intn int q t i 0 q a n 1 while a i q t a i a i q q t i q 例10 11 求某班某门课的平均成绩 统计超过平均值的人数 要求用指针操作数组 分析 1 令p指向score 存放成绩的数组 的开始 2 通过移动指针求和 重复N次 3 求平均值4 令p重新指向score的开始 5 不移动指针但通过指针判断各单元的内容是否大于平均值 并计数 include defineN30voidmain floatscore N p floatv s 0 intk num 0 for p score k 0 kv num printf average 1f num d n v num 一 字符串的指针 C语言的字符串是以 0 作为结束符的字符序列用字符数组存放字符串 即含 0 的字符数组可以看作字符串 字符串指针就是字符数组的首地址 如 chara Apple charb C h i n a 0 二 字符串指针变量 定义 char 指针变量 如 char p q Language p Thisisabook int p q p 123 q 如 p c 10 p c 注意 p 指向 字符串的首地址 不是存放字符串 10 3指针与字符串 例10 12 逆序打印字符串 算法 设字符串为q 令p指向串尾 打印字符 p 并将p前移 直到p指向串首 includevoidmain char p q Language for p q p 0 p for p p q p putchar p putchar n includevoidmain char p q Language intn n strlen q p q n for p p q p putchar p putchar n 例10 13 写一个函数判断一个字符串是否回文 顺读与逆读相同 已知 字符串指针变量p 作参数 结果 是 1 或 0 返回值 算法 1 令q指向最后一个字符2 若 p q 则两指针向里靠拢 直到p q 则return1 否则return0 intishuiwen char p char q p while q 0 q q while p q if p q p q elsereturn0 return1 intishuiwen char p char q p while q q q while p q if p q return0 return1 三 字符数组与字符串指针变量 10 4指针和字符串 chara Ilovethisgame p a 1 存储的内容不同 字符数组可以存字符串 存的是字符 字符指针变量存的是字符串在内存的首地址 2 赋值方式不同 字符数组只能对各个元素赋值 一次只赋一个字符 要赋若于次 字符指针变量只赋值一次 赋的是地址 3 当没有赋值时 字符数组名代表了一个确切的地址 字符指针变量中的地址是不确定的 如 chara 10 p p China a Hello 如 chara 10 p scanf s a scanf s p 三 字符数组与字符串指针变量 10 4指针和字符串 chara Ilovethisgame p a 4 字符数组名不是变量 不能改变值 字符指针变量可以改变值 如 a p 5 可以象数组那样用下标形式引用指针变量所指字符串中的字符 如 char p abcd putchar p 3 p 2 x 6 字符串指针变量的应用 例如 可以指针变量指向一个格式字符串 在printf中直接使用此指针变量 如 char fmt a d b

温馨提示

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

评论

0/150

提交评论