




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 第3版 张磊编著清华大学出版社 C语言程序设计第7章指针程序设计 C语言程序设计 第3版 张磊编著21世纪高等学校规划教材清华大学出版社 C语言程序设计 第3版 张磊编著清华大学出版社 第7章指针程序设计 7 1指针概述7 2指针变量的定义和使用7 3指针与数组7 4指针作为函数的参数7 5指针函数和指向函数的指针变量7 6指针应用举例 C语言程序设计 第3版 张磊编著清华大学出版社 7 1指针概述 7 1 1指针变量7 1 2变量的直接访问和间接访问 C语言程序设计 第3版 张磊编著清华大学出版社 7 1 1指针变量 指针每一个变量 计算机都指定一段内存用以存储变量值 变量使用的这段内存的开始地址 称为变量的地址 在C语言中 把变量的地址称为指针 简单的说 指针就是变量的地址 指针变量专门用来保存指针的一类变量 通过指针变量就可以实现对其他变量的访问 指针变量可以指向任何一种数据类型 如可以指向基本类型的变量 也可以指向数组等 C语言程序设计 第3版 张磊编著清华大学出版社 7 1 2变量的直接访问和间接访问 变量直接访问是指通过变量名直接使用变量数据 例如 inta 10 b 20 c c a b printf d n c 变量间接访问是指通过指针变量去访问其他变量数据 C语言程序设计 第3版 张磊编著清华大学出版社 7 2指针变量的定义和使用 7 2 1指针变量程序示例7 2 2定义指针变量7 2 3使用指针变量 C语言程序设计 第3版 张磊编著清华大学出版社 7 2 1指针变量程序示例 例7 1使用指针变量输出数据程序 programe7 1 c includevoidmain inta b int p1 p2 定义指针变量 a 100 b 10 p1 C语言程序设计 第3版 张磊编著清华大学出版社 7 2 2定义指针变量 一般格式数据类型 指针变量名1 指针变量名2 例如 int p1 p2 float q 指针变量允许和其他变量同时定义 charch str 注意 数据类型 是指针变量要指向的变量的数据类型 C语言程序设计 第3版 张磊编著清华大学出版社 7 2 3使用指针变量 1 指针变量的初始化一般格式数据类型 指针变量名1 地址1 指针变量名2 地址2 例如 intm int p m 2 使用赋值语句赋值一般格式指针变量 变量地址 例如 intm 196 p q p m q p C语言程序设计 第3版 张磊编著清华大学出版社 7 2 3使用指针变量 3 使用指针变量输入数据当指针变量有了确切的指向目标后 即可使用该指针变量为指向的目标输入数据 inta p p 其中 p表示p指向的目标a C语言程序设计 第3版 张磊编著清华大学出版社 7 2 2使用指针变量 例7 2输入a和b两个整数 然后按先大后小的顺序输出 includevoidmain int p1 p2 p a b printf Input scanf d d C语言程序设计 第3版 张磊编著清华大学出版社 7 3指针与数组 7 3 1指针与一维数组7 3 2指针与二维数组7 3 3指针与字符串7 3 4指针数组 C语言程序设计 第3版 张磊编著清华大学出版社 7 3 1指针与一维数组 主要内容如何把一个指针和一维数组关联起来 即怎样使指针指向一维数组如何使用指针访问一维数组的元素 要解决的问题用指针实现一维数组的数据处理 C语言程序设计 第3版 张磊编著清华大学出版社 7 3 1指针与一维数组 定义指向一维数组的指针变量inta 5 10 20 30 40 50 p p a 0 用指针p访问数组元素当p指向a 0 后p与 a 0 等价 p与a 0 等价 p 1与 a 1 等价 p 1 与a 1 等价 p i与 a i 等价 p i 与a i 等价 也可以直接使用数组名为指针变量赋值 p a 也可以使用带下标的指针变量表示数组元素 p i 与a i 等价 也与 p i 等价 C语言程序设计 第3版 张磊编著清华大学出版社 7 3 1指针与一维数组 例7 3用指针实现一维数组的输入输出 programe7 3 1 c include defineN10voidmain inta N int p a i for i 0 i N i scanf d p i for i 0 i N i printf d p i programe7 3 2 c include defineN10voidmain inta N int p a i for i 0 i N i scanf d p p a for i 0 i N i printf d p C语言程序设计 第3版 张磊编著清华大学出版社 7 3 1指针与一维数组 例7 4用指针编写一维数组的排序程序 include defineN10voidmain inta N i j temp p printf Data for p a p p 1 temp p p p 1 p 1 temp printf nResult for p a p a N p printf 4d p printf n C语言程序设计 第3版 张磊编著清华大学出版社 7 3 2指针与二维数组 主要内容如何把一个指针和二维数组关联起来 即怎样使指针指向二维数组如何使用指针访问二维数组的元素 要解决的问题用指针实现二维数组的数据处理 C语言程序设计 第3版 张磊编著清华大学出版社 7 3 2指针与二维数组 回顾二维数组的存储 inta 3 4 如何使p指向首元素 a i j 的指针如何表示 问题 C语言程序设计 第3版 张磊编著清华大学出版社 7 3 2指针与二维数组 指针和二维数组元素的对应关系设p是指针变量 若有 p a 0 则p j将指向a 0 数组中的元素a 0 j 由于a 0 a 1 a M 1 等各个行数组依次连续存储 则对于a数组中的任一元素a i j 指针的一般形式如下 p i N j元素a i j 相应的指针表示为 p i N j a i j 也可用指针下标法表示 p i N j C语言程序设计 第3版 张磊编著清华大学出版社 7 3 2指针与二维数组 举例inta 3 4 10 20 30 40 50 60 70 80 90 91 92 93 int p a 0 则数组a的元素a 1 2 对应的指针为 p 1 4 2元素a 1 2 也就可以表示为 p 1 4 2 用下标表示法 a 1 2 表示为 p 1 4 2 C语言程序设计 第3版 张磊编著清华大学出版社 7 3 2指针与二维数组 例7 5求二维数组元素的最大值 programe7 5 c includevoidmain inta 3 4 3 17 8 11 66 7 8 19 12 88 7 16 int p max for p a 0 max p pmax max p printf Max d n max C语言程序设计 第3版 张磊编著清华大学出版社 7 3 2指针与二维数组 例7 6求二维数组元素的最大值 并确定最大值元素所在的行和列 programe7 6 c includevoidmain inta 3 4 3 17 8 11 66 7 8 19 12 88 7 16 int p a 0 max i j row col max a 0 0 row col 0 for i 0 imax max p i 4 j row i col j printf a d d d n row col max C语言程序设计 第3版 张磊编著清华大学出版社 7 3 3指针与字符串 使字符型指针指向字符串的方法 通过定义指针变量时初始化指向字符串 char p astring 利用赋值语句使指针变量指向字符串 charch 20 s char str1 ch str2 s string str2 str1 C语言程序设计 第3版 张磊编著清华大学出版社 7 3 3指针和字符串 例7 7用指针复制字符串 programe7 7 c includevoidmain chara Iamastudent charb 30 p1 p2 inti for p1 a p2 b p1 0 p1 p2 p2 p1 p2 0 printf Stringb s n b C语言程序设计 第3版 张磊编著清华大学出版社 7 3 4指针数组 数组元素为指针类型的数组称为指针数组 指针数组中的每一个元素都是指针变量 一维指针数组的定义形式如下 数据类型 数组名 数组长度 例 char days 7 该语句定义了一个名为days的字符型指针数组 其每一个元素都是指向char变量的指针变量 指针数组的每个元素是指针变量 只能存放地址 所以对指向字符串的指针数组赋初值时 要把存放字符串的首地址赋给指针数组的对应元素 例 char days 7 Sunday Monday Tuesday Wednesday Thursday Friday Saturday C语言程序设计 第3版 张磊编著清华大学出版社 7 3 4指针数组 char days 7 Sunday Monday Tuesday Wednesday Thursday Friday Saturday 例7 9分行输出days数组指向的字符串 includevoidmain inti char days 7 Sunday Monday Tuesday Wednesday Thursday Friday Saturday for i 0 i 7 i puts days i C语言程序设计 第3版 张磊编著清华大学出版社 7 4指针作为函数的参数 7 4 1简单指针变量作函数参数7 4 2指向数组的指针作函数的参数7 4 3字符串指针作函数的参数 C语言程序设计 第3版 张磊编著清华大学出版社 7 4 1简单指针变量作函数参数 指针变量作形参 voidswap int p1 int p2 inttemp temp p1 p1 p2 p2 temp includevoidmain voidswap int int intx y scanf d d 例7 10用swap 函数交换两个变量的值 简单变量指针 简单指针变量作函数参数 实现简单变量的地址在函数中的传递 C语言程序设计 第3版 张磊编著清华大学出版社 7 4 1简单指针变量作函数参数 例7 11用比较交换法 将一维数组的最大值移到数组的最末元素位置 交换过程用上述swap 函数实现 includevoidmain voidswap int int inti a 10 33 12 97 3 7 18 9 51 10 9 for i 0 ia i 1 swap C语言程序设计 第3版 张磊编著清华大学出版社 7 4 2指向数组的指针作函数的参数 例7 12求一维数组的最大元素值 用三个函数实现 用输入函数input 建立数组 用max a 函数求最大值 用main 函数作为主控函数 为了方便函数编写 先假定数组长度为n 指针p指向该数组 那么 input 函数的功能是为p指向的数组输入n个数据 max a 函数的功能是在具有n个元素 由p指向的数组中找出最大值 C语言程序设计 第3版 张磊编著清华大学出版社 7 4 2指向数组的指针作函数的参数 voidinput int p intn inti for i 0 imax max p i return max programe7 12 c include defineN10voidmain voidinput int int intmax a int int inta N input a N printf MAX d n max a a N 例7 12求一维数组的最大元素值 C语言程序设计 第3版 张磊编著清华大学出版社 7 4 3字符串指针作函数的参数 字符串指针作函数的参数 与前面介绍的数组指针作函数参数没有本质的区别 函数间传递的都是地址值 所不同的仅是指针指向对象的类型不同而已 例7 13用字符串指针作函数参数 将输入的一个字符串复制到另一个字符串中 C语言程序设计 第3版 张磊编著清华大学出版社 7 4 3字符串指针作函数的参数 programe7 13 c includevoidmain voidcopy s char char chara 20 b 30 printf StringA gets a copy s a b printf StringB puts b voidcopy s char str1 char str2 while str2 str1 0 str1 str2 将a字符串复制到b数组中 例7 13用字符串指针作函数参数 将输入的一个字符串复制到另一个字符串中 C语言程序设计 第3版 张磊编著清华大学出版社 7 4 4指针数组作函数的参数 指针数组的元素是指针变量 用指针数组可以实现对一组字符串的处理 用指针数组作函数参数 就可以实现多字符串处理的通用函数 例7 14将一组字符串按字典顺序排序后输出 分析 1 使用指针数组days存储各个字符串的开始地址 使days的元素分别指向个字符串 通过指针数组days间接访问各个字符串 2 使用字符串比较函数strcmp 比较两个字符串的大小 C语言程序设计 第3版 张磊编著清华大学出版社 7 4 4指针数组作函数的参数 include includevoidmain voidstring sort char int voidstring out char int char days 7 Sunday Monday Tuesday Wednesday Thursday Friday Saturday string sort days 7 string out days 7 voidstring out char string intn inti for i 0 i0 temp string j string j string j 1 string j 1 temp 例7 14将一组字符串按字典顺序排序后输出 C语言程序设计 第3版 张磊编著清华大学出版社 7 5指针函数和指向函数的指针变量 7 5 1指针函数 7 5 2指向函数的指针变量 C语言程序设计 第3版 张磊编著清华大学出版社 7 5 1指针函数 函数返回值是指针类型的函数称为指针函数 指针函数的定义的一般格式数据类型 函数名 形参表 函数体 例7 16将一组字符串中长度最大的字符串找出来 并输出这个字符串 分析设有n组字符串 由指针数组p string指向 首先编写求最大长度字符串函数max lenth 该函数返回最长字符串的首地址 在主函数中调用它 并输出所求字符串 programe7 16 c include includevoidmain char max lenth char int char p string 4 Sydney2000 Beijing2008 Athens1996 Korea1992 char p p max lenth p string 4 puts p char max lenth char string intn inti posion max l posion 0 max l strlen string 0 for i 1 imax l max l strlen string i posion i return string posion C语言程序设计 第3版 张磊编著清华大学出版社 7 6指针应用举例 例7 18有红 黄 蓝 白 黑五种颜色的球若干个 每次取出三个球 打印出三种不同颜色球的可能取法 问题分析与算法设计 定义表示颜色的指针数组p 使其元素p 0 p 1 p 2 p 3 p 4 分别指向字符串 red yellow blue white black 这5个字符串用于表示5种彩球颜色 指针数组p的定义方式如下 char p 5 red yellow blue white black 使用0 1 2 3 4分别代表红 黄 蓝 白 黑五种颜色 使用穷举法生成各种组合方案 具体由一个三重循环实现 设每次取出的球分别为i j k 它们分别是0 1 2 3和4等5种取值 外循环取第1个球 第二重循环取第2个球 第三重循取第3个球 由于3的个球颜色不能相同 所以只有i j k时才为所求 得到一种3色球组合方案 将每一种组合的i j k转化为相应的颜色字符串 具体颜色由指针p i p j p k 指向 includevoidmain inti j k n 0 char p 5 red yellow blue white black for i 0 i 4 i for j 0 j 4 j for k 0 k 4 k if i j C语言程序设计 第3版 张磊编著清华大学出版社 7 6指针应用举例 例7 19利用指针作参数的排序函数实现数组排序 问题分析与算法设计 定义对n个整数实现排序的函数p sort 函数原型 voidp sort int p intn 定义对n个整数实现输出的函数p output 函数原型 voidp output int p intn 在主函数中定义有N个元素的实参数组a 然后调用p sort 函数对a数组排序 并调用p output 函数输出排序结果 C语言程序设计 第3版 张磊编著清华大学出版社 7 6指针应用举例 例7 19利用指针作参数的排序函数实现数组排序 实现程序 programe7 19 1 c include defineN10voidp sort int int voidp output int int voidmain inta N 3 5 8 16 7 19 11 6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江建筑安全员b证题库及答案解析
- 中华护理学会糖尿病题库及答案解析
- 凡碧诗岗前培训考试卷及答案解析
- 放射科护理考试试题题库及答案解析
- 新闻采编从业资格证考试2025及答案解析
- 山西a证安全员考试题库及答案解析
- 车辆安全培训试题及答案解析
- 安全突击测试题大全及答案解析
- 心理学教师从业技能考试及答案解析
- 华夏基金从业考试及答案解析
- 生活垃圾教学课件
- 潮汕英歌舞完整版本
- 2025年 山东中烟工业有限责任公司招聘考试笔试试卷附答案
- DB31/T 796-2014节能改造服务规范
- 文员劳动用工合同
- 高速公路收费系统施工技术指南
- 【核心素养目标】《燕歌行并序》公开课一等奖创新教学设计 统编版高中语文选择性必修中册
- 2025年防城港市公安局交通警察支队港口大队招考高频重点提升(共500题)附带答案详解
- 小学五年级语文阅读理解考场答题技巧方法公式步骤复习课件
- 浙江省绍兴市越城区绍兴市第一初级中学2024-2025学年九年级上学期10月月考科学试题
- 食材采购协议书
评论
0/150
提交评论