- 1、本文档共171页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用C语言程序设计教程 第6章 便捷工具指针
C语言程序设计 - 第6章 指针 第6章 便捷工具——指针 本章教学目标 1、理解变量指针和地址 2、理解数组指针的概念、定义和运算 3、应用指针运算符和*等 4、通过指针访问数组元素、字符数组 5、理解指针和数组间的关系 6、理解并应用函数引用中的指针 7、理解二级指针与指针数组 8、理解动态内存分配 教学重点和难点 本章内容 6.1 指针的基本操作与运算 6.2 利用指针访问数组 6.3 指针数组 6.4 指针与函数 6.5 动态内存分配 本章项目任务 利用指针,编程实现“学生信息管理系统”中学生成绩的管理。 6.1 指针的基本操作与运算 1.指针赋值 2.指针运算 3.文件指针变量的使用 1.指针赋值 #include stdio.h void main( ) { unsigned c[10]={1,2,3,4,5,6,7,8,9,0},a=16; unsigned *p=a /*方式1,*将变量p说明为指针变量*/ unsigned *p1=c; /*方式2*/ printf(%u %u\n,a,a); printf(%u %u\n,p,p); printf(%u\n,c); printf(%u %u\n,p1,p1); printf(“%d\n”,*p); /* 运算符*,表示取指针p所指向的内容*/ /* 通过p间接存取变量a的值 */ printf(%u\n,*p1); } 注意: 使用没有初始化的指针会产生不可预料后果。可用“空”值初始化避免这种现象。 2.指针运算(Pointer Arithmetic) (1)?:取内存地址,单目运算符 (2)*:间接访问内存,单目运算符 (3)+/-:加法/减法运算符,双目运算符 (4)++/--:增1/减1运算符,单目运算符 (5)关系运算符:,,=,=,==,!= 指针移动运算 通过对指针变量进行加、减运算实现对指针变量的重新定值,使指针指向不同的存储单元。指针移动运算的限制条件为: ①指针只能在相同数据类型的连续空间内移动; ②指针移动的内存单位是基数据类型的逻辑单位,而不是字节单位。 关系运算 只有当两个指针变量指向同一个连续的存储空间时,才能进行关系运算。 判断两个指针是否指向同一个存储单元: p==q; /*当p和q指向同一元素时,表达式的值为1;反之为0*/ p!=q; /*当p和q不指向同一元素时,表达式的值为1;反之为0*/ 判断不同指针所指向的存储单元间的位置关系: pq /*当p所指的元素在q所指的元素之前时,表达式的值 为1;反之为0。*/ pq /*当p所指的元素在q所指的元素之后时,表达式的值 为1;反之为0。*/ 【例6-5】阅读并理解程序中的文件指针,深入学 习相应的文件读写函数等。 6.1.2 多级指针概念与地址关系 指针是间接访问内存对象的手段。 指针变量可存储各种类型变量的地址. 直接指向被访问变量对象的指针为一级指针. 存放指针变量地址的指针变量称为指向指针的指针,也称为多级指针。 二级指针的定义形式如下: 基类型 **指针变量; 说明: “**”是指向指针的指针标志,其基类型 是其所指向的指针指向的对象的类型。 6.2 利用指针访问数组 6.2.1 指向一维数组和数组元素的指针 6.2.2 指向二(多)维数组和数组元素的指针 指向一维数组的指针 程序剖析 3. 指向一维字符数组/字符串的指针 【应用案例6-1】使用指针和数组为某论文输入一篇英文摘要。 6.2.2 指向二(多)维数组和数组元素的指针 1.指向二维数组元素的指针 2.指向二维数组的指针——行指针快速操作数组法 【例6-10】假设有某数组a[4][5],从键盘输入该数组各元素的值,然后使用行指针设计并解决下列问题。(1)计算第2行的数据和(行求和问题)(2)计算第3列的数据和(列求和问题)(3)求前3行数据中的最大值(二维数组求极值)(4)求后4列数据中的最小值(二维数组求极值)(5)查询并输出某一指定值的位置(二维数组的定位与查询) 分析: (1)问题陈述和需求分析:利用行指针指向二维数组,通过行指针对二维数组进行各种处理,实现以上功能。 (2)处理流程 ①定义行指针p,让p指向数组a。 ②通过循环输入、输出各数组元素。 ③计算并输出第2行的数据和。 ④计算并输出第3列的数据和。
文档评论(0)