《指针和引用》PPT课件.ppt
《《指针和引用》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《指针和引用》PPT课件.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 指针和引用本章主要内容8.1 8.1 指针和指针变量指针和指针变量8.2 8.2 指指 针针 运运 算算8.3 8.3 指针和数组指针和数组8.4 8.4 指针数组和多级指针指针数组和多级指针8.5 8.5 指针和函数指针和函数8.6 new8.6 new和和deletedelete运算符运算符8.7 8.7 引用和其他类型的指针引用和其他类型的指针8.8 8.8 简简 单单 链链 表表8.9 8.9 类类 型型 定定 义义8.1 指针和指针变量8.1.1 8.1.1 指针的概念指针的概念8.1.2 8.1.2 指针变量的说明指针变量的说明8.1.1 指针的概念 指针:一个变量的地址,
2、一个内存单元的地址。变量的地址:该变量所占存储单元的首地址。变量的值:内存单元中的内容。变量地址的表示:&变量名。&:取地址运算符。指针变量:专门存放变量地址的变量。8.1.2 指针变量的说明 指针变量与其他类型的变量一样,必须先说明后使用,说明格式为:存储类型类型变量名1,变量名2;其中,存储类型是可任选的;变量名前的星号指明所说明的变量为指针变量;而类型则指出指针变量所指向的数据类型。1.指针的类型 从语法的角度看,只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。2.指针所指向的数据类型 当通过指针来访问指针所指向的内存区域时,指针所指向的类型决定数据类型。了编译器将把那
3、片内存区里的内容当做什么来看待。8.2 指 针 运 算8.2.1 8.2.1 指针的赋值运算指针的赋值运算8.2.2 8.2.2 指针的算术运算指针的算术运算8.2.3 8.2.3 指针的关系运算指针的关系运算8.2.1 指针的赋值运算指针赋值运算常见的形式如下。(1)将一个变量的地址以&运算的结果形式赋给一个同类型的指针。(2)将另一同类型的指针值赋给某一指针 (3)在C+中可以将0赋给任一指针变量,其含义是初始化指针变量,使其值为“空”。例8-1 指针的赋值运算 例8-2 指针的赋值运算 例8-3 指针的赋值运算8.2.2 指针的算术运算 左值所能进行的算术运算有两种:一是指针变量与一个整
4、数的加或减运算;二是自增、自减运算。1.与整数的加或减运算 如果指针变量的定义为 datatype*p;p初始地址值为DS,那么p+n=DS+nsizeof(datatype)。指针加法的单位是指针对应类型的字节数。例8-4 与整数的加或减运算2.指针的自增或自减 指针的自增或自减表示指针从当前位置向后或向前移动sizeof(数据类型)长度的存储单元,指向下一个或上一个元素 例8-5 指针的自增或自减8.2.3 指针的关系运算 指针变量可以进行关系运算,两个指针变量的关系运算是根据两个指针变量值的大小(作为无符号整数)来进行比较的,通常只有同类型的指针变量进行比较才有意义。相等(=)比较的含义
5、是判断两个指针变量是否指向相同的内存单元,即两个指针值是否相同;而不等比较(、=)的含义是判断两个指针变量是否指向不同的内存单元 在C+中,同一个符号可能表示不同的运算符。编译器根据运算符的优先级、操作数的类型及个数来区分的。例8-6 指针的关系运算 例8-7 混合运算及其优先级8.3 指针和数组8.3.1 8.3.1 指针与一维数组指针与一维数组8.3.2 8.3.2 指针与多维数组指针与多维数组8.3.3 8.3.3 指针和字符串指针和字符串8.3.1 指针与一维数组 如图所示,定义一个数组a10和一个指针pa。int a 10,*pa;pa=a;/A pa=&a 0;/B A、B行的效果
6、是一样的,都是把数组的首地址赋给指针。引用一个数组元素,有3种方法:(1)下标法:ai。(2)数组名地址法:*(a+i)。(3)指针法:指针地址法:*(pa+i)指针下标法:pai图8.3 一维数组与指针示意图例8-8 一维数组与指针8.3.2 指针与多维数组 在C+中,二维数组的各个元素值按行的顺序在一片连续的内存空间中存放。行数组首地址a,相当于&a0。行元素ai 即为*(a+i),实际为各列数组首地址。各列数组首地址ai,相当于&ai0。列元素地址&aij,可用 ai+j或者*(a+i)+j表示。图所示为二维数组与指针的关系示意图。图8.4 二维数组与指针关系示意图例8-9 二维数组与指
7、针例8-10 用指针变量输出二维数组8.3.3 指针和字符串用字符指针表示字符串有3种方法:(1)指向字符数组,让字符指针与存放字符串的字符数组关联,就可以用字符指针表示该字符串。(2)直接定义指针并初始化,让它指向指定的字符串。(3)直接将字符串常量赋予字符指针 例8-11 指针与字符串8.4 指针数组和多级指针8.4.1 8.4.1 指针数组指针数组8.4.2 8.4.2 指向一维数组的指针变量指向一维数组的指针变量8.4.3 8.4.3 多级指针多级指针8.4.1 指针数组 指针数组是指针变量的集合,它的每一个元素都是一个指针,且具有相同的数据类型。其一般的定义格式为:存储类型 *;数据
8、类型是指针所指向变量的数据类型。因为“”的优先级高于“*”,指针与构成一个数组,再与*结合,指明是一个指针数组,数据类型指明指针数组中每个元素所指变量的类型。例8-13 指针数组输出 例8-14 将字符串降序后输出8.4.2 指向一维数组的指针变量 可以声明一个指针变量使其只能指向一维数组,声明的格式为:要注意这样两种写法:int*p4;/定义了一个指针数组,该数组有4个指针元素 int(*p)4;/定义了一个指针,该指针指向一个有4个元素的数组 因为运算符的优先级高于*,所以用圆括号()将*与指针变量名括起来以改变运算符的优先级顺序,使*先作用于指针变量,然后再与结合,形成指向一维数组的指针
9、变量。例8-15 指向一维数组的指针变量8.4.3 多级指针 如果指针变量中存放的是另一个指针的地址,就称该指针变量为指向指针的指针变量。指向指针的指针变量也称为二级指针。其声明的语法格式为:*两个符号*表示后面声明的变量为指向指针的指针变量。例8-16 通过多级指针访问指针数组元素 例8-17 多级指针的简单应用8.5 指针和函数8.5.1 8.5.1 指针作为函数的参数指针作为函数的参数8.5.2 8.5.2 返回指针的函数返回指针的函数8.5.3 8.5.3 指向函数的指针指向函数的指针8.5.4 8.5.4 带参数的带参数的main()main()函数函数8.5.1 指针作为函数的参数
10、 当形参为指针时,实参可以是一个基类型相同的指针变量或变量的地址。当函数的参数为指针时,可将指针值和指针所指向的数据作为函数的输入参数,即在函数体内可使用指针值和指针所指向的数据值。也可将指针所指向的数据作为函数的输出参数,即在函数体内改变了形参指针所指向的数据值,调用函数后,实参指针所指向的数据也随之改变。例8-18 用值传递和地址传递实现两个数据的交换 例8-19 形参为指针、实参为数组名和指针 例8-20 形参为数组名,实参为数组名和指针8.5.2 返回指针的函数 函数的返回值可以为整型、实型、双精度型、字符型数据,也可以为指针,返回指针值的函数的定义方法如下:类型说明符 *函数名(参量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针和引用 指针 引用 PPT 课件
限制150内