C语言程序设计 教学课件 ppt 作者 常雪琴 叶得学 第8章 指针

上传人:E**** 文档编号:89422903 上传时间:2019-05-25 格式:PPT 页数:31 大小:203KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 常雪琴 叶得学 第8章  指针_第1页
第1页 / 共31页
C语言程序设计 教学课件 ppt 作者 常雪琴 叶得学 第8章  指针_第2页
第2页 / 共31页
C语言程序设计 教学课件 ppt 作者 常雪琴 叶得学 第8章  指针_第3页
第3页 / 共31页
C语言程序设计 教学课件 ppt 作者 常雪琴 叶得学 第8章  指针_第4页
第4页 / 共31页
C语言程序设计 教学课件 ppt 作者 常雪琴 叶得学 第8章  指针_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 常雪琴 叶得学 第8章 指针》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 常雪琴 叶得学 第8章 指针(31页珍藏版)》请在金锄头文库上搜索。

1、c语言程序设计 中国铁道出版社,8.1 地址指针的基本概念 8.2 变量的指针和指向变量的指针变量 8.3数组指针和指向数组的指针变量 8.4字符串的指针和指向字符串的针指变量 8.5 函数指针变量 8.6 指针型函数 8.7指针数组和指向指针的指针,第8章 指针,c语言程序设计 中国铁道出版社,通过本章的学习,使学生掌握指针的数据类型,及指向变量的指针、指向数组的指针、和函数指针变量等指针的各种运算操作。,基本要求及教学目的,c语言程序设计 中国铁道出版社,重点及难点,重点: 指针的数据类型,及指向变量的指针、指向数组的指针、和函数指针变量 难点: 指向数组的指针变量、函数指针变量和指针型函

2、数,c语言程序设计 中国铁道出版社,8.1 地址指针的基本概念,在语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。 严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。,c语言程序设计 中国铁道出版社,8.2 变量的指针和指向变量的指针变量,8.2.1 定义一个指针变量 8.2.2 指针变量的引用 8.2.3 指针变量作为函数参数

3、 8.2.4 指针变量运算,c语言程序设计 中国铁道出版社,8.2.1 定义一个指针变量 对指针变量的定义包括三个内容: (1)指针类型说明,即定义变量为一个指针变量; (2)指针变量名; (3)变量值(指针)所指向的变量的数据类型。 其一般形式为: 类型说明符 *变量名; 其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。,c语言程序设计 中国铁道出版社,8.2.2 指针变量的引用 两个有关的运算符: (1)&:取地址运算符。 (2)*:指针运算符(或称“间接访问” 运算符)。 语言中提供了地址运算符&来表示变量的地址。其一般形式为:

4、&变量名; 设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: (1)指针变量初始化的方法 (2)赋值语句的方法,c语言程序设计 中国铁道出版社,8.2.3 指针变量作为函数参数 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。 【例8.2】输入的两个整数按大小顺序输出。用函数处理,而且用指针类型的数据作函数参数。 #include swap(int *p1,int *p2) int temp; temp=*p1; *p1=*p2; *p2=temp; ,c语言程序设计 中国铁道出版社,main() i

5、nt a,b; int *pointer_1,*pointer_2; scanf(“%d,%d“, 运行结果:输入45和78,c语言程序设计 中国铁道出版社,8.2.4 指针变量运算 指针变量可以进行某些运算,但其运算的种类是有限的。它只能进行赋值运算和部分算术运算及关系运算。 1.指针运算符 (1)取地址运算符&:取地址运算符&是单目运算符,其结合性为自右至左,其功能是取变量的地址。在scanf函数及前面介绍指针变量赋值中,我们已经了解并使用了&运算符。 (2)取内容运算符*:取内容运算符*是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。在*运算符之后跟的变量必须是指针变量。,

6、c语言程序设计 中国铁道出版社,2.指针变量的运算 (1)赋值运算:指针变量的赋值运算有以下几种形式。 指针变量初始化赋值,前面已作介绍。 把一个变量的地址赋予指向相同数据类型的指针变量。 把一个指针变量的值赋予指向相同类型变量的另一个指针变量。 把数组的首地址赋予指向数组的指针变量。 把字符串的首地址赋予指向字符类型的指针变量。 把函数的入口地址赋予指向函数的指针变量。,c语言程序设计 中国铁道出版社,(2)加减算术运算 对于指向数组的指针变量,可以加上或减去一个整数n。设pa是指向数组a的指针变量,则pa+n,pa-n,pa+,+pa,pa-,-pa运算都是合法的。指针变量加或减一个整数n

7、的意义是把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。应该注意,数组指针变量向前或向后移动一个位置和地址加1或减1在概念上是不同的。因为数组可以有不同的类型,各种类型的数组元素所占的字节长度是不同的。,c语言程序设计 中国铁道出版社,(3)两个指针变量之间的运算:只有指向同一数组的两个指针变量之间才能进行运算,否则运算毫无意义。 两指针变量相减:两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数。 两指针变量进行关系运算:指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的关系。,c语言程序设计 中国铁道出版社,8.3数组指针和指向数组的指针变量,8.3

8、.1 指向数组元素的指针 8.3.2 通过指针引用数组元素 8.3.3 数组名作函数参数 8.3.4 指向多维数组的指针和指针变量,c语言程序设计 中国铁道出版社,8.3.1 指向数组元素的指针 一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。一个数组也是由各个数组元素(下标变量)组成的。每个数组元素按其类型不同占有几个连续的内存单元。一个数组元素的首地址也是指它所占有的几个内存单元的首地址。 定义一个指向数组元素的指针变量的方法,与以前介绍的指针变量相同。 例如: int a10; /*定义a为包含10个整型数据的数组*/ int *p; /*定义p为指向整型变量的

9、指针*/ p=,c语言程序设计 中国铁道出版社,C语言规定,数组名代表数组的首地址,也就是第0号元素的地址。 数组指针变量说明的一般形式为: 类型说明符 *指针变量名; 其中类型说明符表示所指数组的类型。从一般形式可以看出指向数组的指针变量和指向普通变量的指针变量的说明是相同的。,c语言程序设计 中国铁道出版社,8.3.2 通过指针引用数组元素 C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。 1.访问数组元素的方法: (1)下标法,即用ai形式访问数组元素。在前面介绍数组时都是采用这种方法。 (2)指针法,即采用*(a+i)或*(p+i)形式,用间接访问

10、的方法来访问数组元素,其中a是数组名,p是指向数组的指针变量,其处值p=a。,c语言程序设计 中国铁道出版社,8.3.3 数组名作函数参数 数组名可以作函数的实参和形参。如: main() int array10; f(array,10); f(int arr,int n); ,c语言程序设计 中国铁道出版社,8.3.4 指向多维数组的指针和指针变量 1. 多维数组的地址 设有整型二维数组a34如下: 0 1 2 3 4 5 6 7 8 9 10 11 它的定义为: int a34=0,1,2,3,4,5,6,7,8,9,10,11,c语言程序设计 中国铁道出版社,2.指向多维数组的指针变量

11、二维数组指针变量说明的一般形式为: 类型说明符 (*指针变量名)长度 其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。应注意 “(*指针变量名)”两边的括号不可少,如缺少括号则表示是指针数组(本章后面介绍),意义就完全不同了。,c语言程序设计 中国铁道出版社,8.4字符串的指针和指向字符串的针指变量,8.4.1 字符串的表示形式 8.4.2 使用字符串指针变量与字符数组的区别,c语言程序设计 中国铁道出版社,8.4.1 字符串的表示形式 在C语言中,可以用两种方法访问一个字符串。 1.用字符

12、数组存放一个字符串,然后输出该字符串。 【例8.18】 main() char string=”I love China!”; printf(“%sn“,string); 说明:和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址。 2.用字符串指针指向一个字符串。,c语言程序设计 中国铁道出版社,8.4.2 使用字符串指针变量与字符数组的区别 用字符数组和字符指针变量都可实现字符串的存储和运算。但是两者是有区别的。在使用时应注意以下几个问题: 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放 在以该首地址为首的一块连续的内存空间中并以0作为串的结束。

13、字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。 对字符串指针方式,c语言程序设计 中国铁道出版社,8.5 函数指针变量,在语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为“函数指针变量”。 函数指针变量定义的一般形式为: 类型说明符 (*指针变量名)(); 其中“类型说明符”表示被指函数的返回值的类型。“(* 指针变量名)”表示“*”后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是

14、一个函数。,c语言程序设计 中国铁道出版社,函数指针变量形式调用函数的步骤如下: (1)先定义函数指针变量。 (2)把被调函数的入口地址(函数名)赋予该函数指针变量。 (3)用函数指针变量形式调用函数。 (4)调用函数的一般形式为: (*指针变量名) (实参表) 使用函数指针变量还应注意以下两点: (1)函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。 (2)函数调用中“*指针变量名)”的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号。,c语言程序设计 中国铁道出版社,

15、8.6 指针型函数,所谓函数类型是指函数返回值的类型。在语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数。 定义指针型函数的一般形式为: 类型说明符 *函数名(形参表) /*函数体*/ 其中函数名之前加了“*”号表明这是一个指针型函数,即返回值是一个指针。类型说明符表示了返回的指针值所指向的数据类型。,c语言程序设计 中国铁道出版社,8.7指针数组和指向指针的指针,8.7.1 指针数组的概念 8.7.2 指向指针的指针 8.7.3 main函数的参数,c语言程序设计 中国铁道出版社,8.7.1 指针数组的概念 一个数组的元素值为指针则是指针数组。 指针数组是一组有序的指针的集合。 指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。 指针数组说明的一般形式为: 类型说明符 *数组名数组长度 其中类型说明符 例如: int *pa3 表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。为指针值所指向的变量的类型。,c语言程序设计 中国铁道出版社,8.7.2 指向指针的指针 如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。 在前面已经介绍过,通

展开阅读全文
相关资源
相关搜索

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

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