第8章 指针(一)(教案)-《C 语言程序设计》同步教学(电子工业版)
2024-11-21
|
5页
|
98人阅读
|
0人下载
普通
内容正文:
章 节
第8章 指针(一)
目 标
1、熟练掌握指针的概念、含义、用法;
2、掌握不同类型指针的区别、指针的基本运算、指针与数组的关系;
主要内容
1、指针数据类型,指针变量的定义、初始化和引用
2、用指针变量作函数参数,传地址调用
3、指针数组
4、指针和字符串
重 点
难 点
指针的概念、用途、基本运算。
教授思路,采用的教学方法和辅助手段,板书设计,重点如何突出,难点如何解决,师生互动等
主要思路:
用图示的方法说明指针的概念。通过问题“如何保存一个数据存储区域的地址”的解决方法引出指针变量的概念,进一步说明指针变量定义的一般格式。
用讲解加举例的方法说明 & 和 *操作符的用法。
用图示方法说明运算符 +、-、++、-- 应用于不同类型指针时的区别。
一、概述
· 指针是C语言的一个重要概念,也是C语言区别于其他程序设计语言的最重要特征之一,正确、灵活地使用指针可以设计出结构紧凑、效率更高的应用程序。
· 指针的三种主要用途
· 实现数组的快速访问
· 允许函数修改其调用参数
· 为使用C语言中的动态内存分配函数提供支持,以便于实现链表和其他的动态数据结构。
1、内存和内存地址的概念
(1)什么是内存
(2)什么是内存地址
(3)内存单元的基本属性
值、地址
(4)内存单元的划分和内存单元的值与地址的关系图
2、变量的访问方式
(1)直接访问方式
(2)间接访问方式
3、指针和指针变量
常用的概念和术语:
(1)指针
(2)指针变量
(3)一些术语
· 当指针变量存储了另一个变量的地址时,通常说该指针变量指向了这个变量。
· 当一个指针变量指向一个变量后,也说该指针变量有了指向。
· 一般地,在不致于引起混淆的情况,也把指针变量简称为指针。
4、指针变量和普通变量的关系
二、指针类型数据及其操作
1、指针变量的定义
指针变量定义的一般格式:
基类型 *指针变量名[=初始值];
2、指针变量的引用
(1)运算符:
· 取地址运算符(&)
· 间接访问运算符(*)
(2)使用指针变量的注意事项
· 在特定的系统中,指针变量所占用的内存空间大小固定不便,和基类型无关。
· 使用指针变量前要进行初始化,即要让指针变量有一个指向。
· 指针变量和普通变量一样都有地址和值,但指针变量的值是其他对象的地址,而普通变量的值是一般意义下的数据。
· 基类型不是“指针类型”,而是指针变量所指向对象的类型,它实际上限定了当用指针变量访问该指针变量所指向的内存空间时,将把这块内存空间中的内容当做什么类型的数据来看待。
· 所有的指针运算都和基类型相关联,所以正确说明指针的基类型非常重要。
3、指针数组
定义指针数组一般格式:
基类型 *指针数组名[整数表达式]={初始值列表};
三、指针变量作函数参数
(1)地址传递的概念
(2)示例:
(3)参数传递程序举例
无类型指针作为函数参数的程序示例
四、指针变量的运算
1、指针变量的赋值运算
· 把一个变量的地址赋给指向相同数据类型的指针变量
· 把一个指针变量的值赋给另一个指向相同类型的指针变量
2、指针变量和整数的加、减运算
一般格式:
p = p ± n (假设,p是一个指针变量,n是一个整数)
p的新值 = p的旧值 ± n * sizeof(指针基类型)
3、指针变量的关系运算
4、指针变量的相减运算
五、多级指针
1、多级指针的概念和构造方式
2、二级指针的定义
基类型 **二级指针变量名[=初始值];
3、二级指针的操作
六、指针和数组的关系
1、指针和一维数组
指针和数组有紧密的联系,数组名代表了整个数组的首地址,即数组名是一个指针。对数组元素的访问通常有两种方法,一种是下标法,另一种是指针法。
2、指针和二维数组
数组名a代表了整个二维数组的首地址,即第1行的首地址,a+1代表了第2行的首地址,a+2代表了第3行的首地址。由于a[0]、a[1]、a[2]又都是一维数组,因此它们又分别代表一个一维数组的首地址,例如,a[0]代表的一维数组是:a[0][0]、a[0][1]、a[0][2]、a[0][3]。
七、指针和字符串
在C语言中,字符串被定义为是一个以空字符终结的一维字符数组,因此,可以使用char类型的指针变量来处理字符串。char类型指针变量通常称为字符指针变量。
1、字符指针变量的定义形式
char *指针变量名[=初始值];
2、字符指针变量的赋值
3、示例程序
整理字符串: 将字符串的前导空格和后随空格删除,并将字符串中非空格字符串之间的连续的多个空格只保留一个,而删除多余的空格。
· 编程思路:
(1)从最后一个字符开始往回检查字符串,当遇到第一个不是空格的字符时,将该字符后面的那个字符设置为0,并停止检查;这样就删除了字符串的尾部空格。
(2)从第一个字符开始检查字符串,当遇到第一个不是空格的字符时,记录下该字符的位置,设此时的位置为pos,并停止检查;这样从pos开始,以后的字符串就相当于删除了原字符串的前导空格。
(3)用malloc函数产生一个适当大小的临时字符串,让一个指针q指向这个临时字符串,另一个指针p指向原字符串的pos位置。用指针p循环检测原字符串,当检测到不是空格的字符时,将该字符保存到q指向的临时字符串中;当检测到连续的空格时,只向q指向的临时字符串中存储一个空格;并调整q指向的位置。
(4)将临时字符串拷贝到原字符串,删除临时字符串。
学科网(北京)股份有限公司
FFFF FFFF
地址
0012 FF7C
9
8
7
……
0012 FF74
0012 FF78
0012 FF7C
……
变量x
变量y
变量z
指针变量ptr
内存
$$
资源预览图
1
2
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。