C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒第8章 指 针

上传人:w****i 文档编号:92479029 上传时间:2019-07-10 格式:PPT 页数:61 大小:1.48MB
返回 下载 相关 举报
C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒第8章 指 针_第1页
第1页 / 共61页
C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒第8章 指 针_第2页
第2页 / 共61页
C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒第8章 指 针_第3页
第3页 / 共61页
C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒第8章 指 针_第4页
第4页 / 共61页
C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒第8章 指 针_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒第8章 指 针》由会员分享,可在线阅读,更多相关《C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒第8章 指 针(61页珍藏版)》请在金锄头文库上搜索。

1、第8章 指 针,第8章 指 针,8.1 指针与指针变量 8.2 指针与一维数组 8.3 指针与二维数组 8.4 指针与字符串 8.5 指针数组与多级指针 8.6 函数指针与返回值为指针的函数 8.7 动态内存分配 8.8 命令行参数 8.9 综合实训 习 题,8.1 指针与指针变量,知识导例 1.定义两个指针变量,使用“*”运算符实现对变量的引用,08(182-231)P50 fyy_Embed_1.png,图8-1 程序ex8_1_1.c运行结果 2.给定三个整型数,按从大到小的顺序进行排序,8.1 指针与指针变量,08(182-231)P50 fyy_Embed_2.png,图8-2 程序

2、ex8_1_2.c运行结果 相关知识 1.指针的概念,8.1 指针与指针变量,08(182-231)P50 fyy_Embed_3.jpg,a),08(182-231)P50 fyy_Embed_4.jpg,b),8.1 指针与指针变量,图8-3 变量在内存的存储a)变量在内存中的表示 b)变量a在存储单元中的内容 2.指针变量的定义 3.指针变量的使用 (1)指针变量的初始化 初始化是定义的时候进行的,赋值一般是在定义好指针变量以后进行的,如果定义的同时没有对指针进行初始化,则指针变量的值是一个不确定的值。下面是几种初始化方式。 1)定义指针变量,由系统进行初始化操作,或者不进行初始化。 2

3、)定义指针变量的同时进行初始化。 3)给指针变量初始化为空值。,8.1 指针与指针变量,(2)指针变量的赋值 指针变量的赋值,就是将一个地址值赋到指针变量所在的存储单元中。在这里需要说明的是,初始化也可以看作是赋值的一种方式,因为初始化的过程也给存储单元赋了值。它们的区别主要是:初始化是在定义的同时进行的,而赋值是在定义了指针变量以后进行的,这符合变量使用的“先定义、后使用”的原则。 1)把一个变量的地址赋给指向的数据类型与之相同的指针变量。 2)同种类型的指针变量相互赋值。 (3)指针变量的引用 指针变量定义好以后,就是为了使用它。使用指针对所指向的存储单元进行操作,就是前面讲过的间接访问。

4、 1)输出a的值。 2)给存储单元a进行赋值。,8.1 指针与指针变量,3)使用*p进行运算。 4.指针变量作为函数的参数 实践训练 【实训项目一】 1.实训内容 2.解决方案,08(182-231)P50 fyy_Embed_5.png,图8-4 程序prac8_1_1.c运行结果,8.1 指针与指针变量,3.项目分析,08(182-231)P50 fyy_Embed_6.jpg,图8-5 prac8_1_1解决过程图示 【实训项目二】 1.实训内容 2.解决方案,8.1 指针与指针变量,08(182-231)P50 fyy_Embed_7.png,图8-6 程序prac8_1_2.c运行结

5、果 3.项目分析 (1)swap_no函数的调用原理 swap_no函数的调用原理如图8-7所示。 (2)swap_yes函数的调用原理 swap_yes函数的调用原理如图8-8所示。,8.1 指针与指针变量,08(182-231)P50 fyy_Embed_8.jpg,08(182-231)P50 fyy_Embed_9.jpg,图8-7 swap_no函数的调用原理 图8-8 swap_yes函数的调用原理 【实训项目三】,8.1 指针与指针变量,1.实训内容 2.解决方案,08(182-231)P50 fyy_Embed_10.png,图8-9 程序prac8_3_1.c运行结果 3.项

6、目分析 知识拓展 在定义指针变量时,有时不想定义一个具体类型的指针,此时可以定义一个void类型的指针,如定义void *p,则p是一个无类型的指针。,8.2 指针与一维数组,知识导例 定义一个整型一维数组和一个指向该数组的整型指针,分别用不同的方法输出数组中的元素。,08(182-231)P50 fyy_Embed_11.png,图8-10 程序ex8_2_1.c的运行结果 相关知识 1.指向一维数组的指针,8.2 指针与一维数组,图8-11 指针和一维数组之间的关系,2.指针的运算,8.2 指针与一维数组,08(182-231)P50 fyy_Embed_13.jpg,图8-12 指针指向

7、连续的存储单元时的运算 1)p加上一个整型数,如p+3,那么p+3指向了a5,即指向了数组元素值为6的存储单元。,8.2 指针与一维数组,2)p减去一个整型数,如p(1,那么p(1指向了a1,即指向了数组元素值为2的存储单元。 3)p+或+p,都会使指针p指向a3,即向上移动一个存储单元,指向数组元素值为4的存储单元。 (*p)+ 是使p所指向的存储单元的值增1,即是a2的值增1,变为4。 (*p)( 是使p所指向的存储单元的值减1,即是a2的值减1,变为3。 4)指向连续的存储单元的两个指针间的运算。 3.通过指针引用数组元素,8.2 指针与一维数组,(1)下标法 例如,通过ai或者pi来引

8、用数组元素。此时注意,通过p来访问时,p在此也作为数组名称来用,但是由于p是一个指针变量,所以其值是可以改变的,如p0不一定就是a0,p指向的那个数组元素即是p0。例如,p当前位置在a+3,那么p0的值其实就是a3。 (2)指针法 通过使用*(p+i)或*(a+i)来引用数组元素。此时要注意的是,p是一个变量,起始位置不一定就是a,所以*(p+i)和*(a+i)不一定相同。,08(182-231)P50 fyy_Embed_14.emf,8.2 指针与一维数组,图8-13 两个指针进行运算时的演示程序结果图 实践训练 【实训项目一】 1.实训内容 2.解决方案,08(182-231)P50 f

9、yy_Embed_15.png,图8-14 程序prac8_2_1.c运行结果 3.项目分析 【实训项目二】,8.2 指针与一维数组,1.实训内容 2.解决方案,08(182-231)P50 fyy_Embed_16.png,图8-15 程序prac8_2_2.c运行结果 3.项目分析,8.2 指针与一维数组,08(182-231)P50 fyy_Embed_17.jpg,图8-16 一维数组作为函数参数时实参形参之间的数据传递,8.3 指针与二维数组,知识导例 定义一个三行四列的二维数组和一个指向该数组的指针变量,用多种方法输出二维数组的元素。,08(182-231)P50 fyy_Embe

10、d_18.png,8.3 指针与二维数组,图8-17 程序ex8_3_1.c运行结果 相关知识 1.二维数组的地址及利用地址取值,图8-18 二维数组的逻辑结构及地址,图8-19 二维数组的地址,8.3 指针与二维数组,图8-19 二维数组的地址,2.指向二维数组的指针,图8-20 二维数组的列地址,3.指向二维数组的指针变量及用指针变量取值,8.3 指针与二维数组,08(182-231)P50 fyy_Embed_23.jpg,图8-21 二维数组元素个数和位置的计算,8.3 指针与二维数组,图8-22 指向二维数组的指针变量,4.二维数组作为函数参数进行数据的传递,08(182-231)P

11、50 fyy_Embed_25.jpg,图8-23 二维数组作为函数参数时实参形参之间的数据传递,8.3 指针与二维数组,实践训练 【实训项目】 1.实训内容 2.解决方案,08(182-231)P50 fyy_Embed_26.png,8.3 指针与二维数组,图8-24 程序prac8_3_1.c运行结果 3.项目分析,8.4 指针与字符串,知识导例 定义一个字符数组和一个字符串,将一个字符串拷贝到字符数组之中,拷贝功能用函数来实现。,08(182-231)P50 fyy_Embed_27.png,图8-25 程序ex8_4_1.c运行结果 相关知识 1.字符串的实质 2.指向字符串的指针变

12、量与字符数组,8.4 指针与字符串,(1)字符数组 字符数组常用来存储字符串。 1)一维字符数组。,08(182-231)P50 fyy_Embed_28.jpg,图8-26 字符串“I love china! “存储在字符数组中的情况,08(182-231)P50 fyy_Embed_29.png,图8-27 vowel字符数组作为字符串的输出结果,8.4 指针与字符串,08(182-231)P50 fyy_Embed_30.png,2)二维字符数组。 (2)用指针变量指向字符串 因为字符串代表一个地址,所以定义一个字符指针变量用来获取该地址,从而让指针变量指向该字符串。例如:,8.4 指针

13、与字符串,08(182-231)P50 fyy_Embed_31.jpg,图8-28 二维字符数组name的存储情况,8.4 指针与字符串,08(182-231)P50 fyy_Embed_32.png,8-29 二维字符数组的输出方法与输出结果,8.4 指针与字符串,08(182-231)P50 fyy_Embed_33.jpg,图8-30 指针变量及指向的字符串“I love china!“在内存中的存储情况,08(182-231)P50 fyy_Embed_34.jpg,图8-31 字符指针变量作函数参数时实参向形参数据的传递 3.指向字符串的指针变量作为函数的参数,8.4 指针与字符串

14、,实践训练 【实训项目一】 1.实训内容 2.解决方案,08(182-231)P50 fyy_Embed_35.png,图8-32 程序prac8_4_1.c运行结果 3.项目分析 【实训项目二】,8.4 指针与字符串,1.实训内容 2.解决方案,08(182-231)P50 fyy_Embed_36.png,图8-33 程序prac8_4_2.c运行结果 3.项目分析,8.5 指针数组与多级指针,知识导例 定义一个包含4个元素的整型指针数组,分别指向一个一维整型数组,每个一维数组各存储春、夏、秋、冬4个季节中的3个月份,另外定义一个字符指针数组,存储一年12个月份的英文名称,请输出对应季节中

15、相应月份的英文名称。,08(182-231)P50 fyy_Embed_37.png,8.5 指针数组与多级指针,图8-34 程序ex8_5_1.c运行结果 相关知识 1.指针数组,08(182-231)P50 fyy_Embed_38.jpg,图8-35 字符串数组在内存中的表示形式,8.5 指针数组与多级指针,08(182-231)P50 fyy_Embed_39.jpg,图8-36 二维字符数组在内存中的表示形式 2.二级指针,8.5 指针数组与多级指针,08(182-231)P50 fyy_Embed_40.jpg,图8-37 二级指针与指向的存储单元之间的关系 实践训练 【实训项目一

16、】 1.实训内容 2.解决方案,8.5 指针数组与多级指针,08(182-231)P50 fyy_Embed_41.png,图8-38 程序prac8_5_1.c的运行结果 3.项目分析 【实训项目二】 1.实训内容 2.解决方案,8.5 指针数组与多级指针,08(182-231)P50 fyy_Embed_42.png,图8-39 程序prac8_5_2.c的运行结果 3.项目分析 知识拓展,8.5 指针数组与多级指针,以上是定义了二级指针,同理,如果再定义一个指针变量r指向p,则r就是三级指针。,08(182-231)P50 fyy_Embed_43.jpg,图8-40 三级指针与指向的存储单元之间的关系,8.6 函数指针与返回值为指针的函数,知识导例 1.利用指向函数的指针调用函数,求两个数的最大值 2.有一组整数,排成一个序列,编一个函数,将该序列进行倒排,08(182-231)P50 fyy_Embed_44.png,08(182-231)P50 fyy_Embed_45.png,图8-41 程序e

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号