当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《C++语言》课程教学资源(PPT课件讲稿)第六章 指针和引用

资源类别:文库,文档格式:PPS,文档页数:31,文件大小:94KB,团购合买
第6章指针和引用 6.1指针 6.1.1指针的概念 台计算机中必定配置有大量的存储单元,每一个存储单元都 用一个唯一的“地址所标识。指针变量(简称指针)就是用来 存放该地址号码”的变量。 由于不同的数据类型其所占的存储单元个数相异,因此指针所 存放的是数据的首地址
点击下载完整版文档(PPS)

第6章指针和引用 6.1指针 61.1指针的概念 台计算机中必定配置有大量的存储单元,每一个存储单元都 用一个唯一的“地址”所标识。指针变量(简称指针)就是用 来存放该“地址号码”的变量。 由于不同的数据类型其所占的存储单元个数相异,因此指针所 存放的是数据的首地址 2000 2002 36

第6章 指针和引用 6.1 指针 6.1.1 指针的概念 一台计算机中必定配置有大量的存储单元,每一个存储单元都 用一个唯一的“地址”所标识。指针变量(简称指针)就是用 来存放该“地址号码”的变量。 由于不同的数据类型其所占的存储单元个数相异,因此指针所 存放的是数据的首地址。 2000 2002 25 36

6.1.2指针的说明 storage type pointer, 其中: pointer为所说明的指针变量名;星号(*)在这里是 个指针变量说明符,它指出这里所说明的是一个指针变量 type为指针类型,也就是该指针变量将存放其地址之数据的 类型。例如 char pc pi =&i 这里的符号“&”叫做“取地址”运算符,它是 元运算符, 其运算结果为其操作数(必须是一个变量)的地址

6.1.2 指针的说明 type *pointer; 其中:pointer 为所说明的指针变量名;星号(*)在这里是一 个指针变量说明符,它指出这里所说明的是一个指针变量; type 为指针类型,也就是该指针变量将存放其地址之数据的 类型。例如: char *pc; int i, *pi = &i; 这里的符号“&”叫做“取地址”运算符,它是一个一元运算符, 其运算结果为其操作数(必须是一个变量)的地址

6.1.3对指针的访问 对指针的访问与对普通变量的访问不同。除了可以像普通变量 那样对指针进行读、写访问以及进行算术运算(统统属于对指 针值的访问)外,还存在一种对指针内容的访问,实际上就是 访问指针所指地址中数据的值。例如: int i, *ip, * iq p= & ∥为指针赋一地址 ∥/指针间的赋值 p=5: ∥对指针的内容进行写访问,等效于i=5 cout <<"ip, ∥/对指针的内容进行读访问

6.1.3 对指针的访问 对指针的访问与对普通变量的访问不同。除了可以像普通变量 那样对指针进行读、写访问以及进行算术运算(统统属于对指 针值的访问)外,还存在一种对指针内容的访问,实际上就是 访问指针所指地址中数据的值。例如: int i, *ip, *iq; ip = &i; // 为指针赋一地址 iq = ip; // 指针间的赋值 *ip = 5; // 对指针的内容进行写访问,等效于 i = 5; cout << *ip; // 对指针的内容进行读访问

6.14指针的运算 61.4.1指针的赋值运算 p,Q,1 float void pp ip =&i ∥将一个整型变量的地址赋给整型指针 1q=p; ∥将一个整型指针的值赋给整型指针 tp=(ot)i∥将一个整型指针的值赋给实型指针 vp ∥将一个整型指针的值赋给无值型指针 iq=0x80; ∥将一个常量赋给指针

6.1.4 指针的运算 6.1.4.1 指针的赋值运算 int *ip, *iq, i; float *fp; void *vp; ip = &i; // 将一个整型变量的地址赋给整型指针 iq = ip; // 将一个整型指针的值赋给整型指针 fp = (float*)ip; // 将一个整型指针的值赋给实型指针 vp = iq; // 将一个整型指针的值赋给无值型指针 iq = 0x80; // 将一个常量赋给指针

6.1.4.2指针的关系运算 ip>ig∥ip的值大于i时为真 在实用中,若某个指针的值为0,则称该指针为空指针。例: f(p==0) ∥若ip为空指针则 C+语言提供了一个预定义的宏 define NULL 0 所以,上述语句应当强调说明的是:向未初始化的指针所指 ifp=NULL)的内容进行写操作是一种危险的操作。所谓 未初始化的指针是指尚无明确值的指针

6.1.4.2 指针的关系运算 ip > iq // ip 的值大于 iq 时为真 在实用中,若某个指针的值为 0,则称该指针为空指针。例: if(ip == 0) … // 若 ip 为空指针则...。 C++ 语言提供了一个预定义的宏: #define NULL 0 所以,上述语句可以改为: if(ip == NULL) ... 应当强调说明的是:向未初始化的指针所指 的内容进行写操作是一种危险的操作。所谓 未初始化的指针是指尚无明确值的指针

6.1.4.3指针的算术运算 在实用中,仅使用指针的加减运算。应当说明的是,指针的 算术运算是以指针所属数据类型所占内存的大小为单位进行 的。即,设指针p的类型为type,则有: p±n=p± n x sizeof(type 例如,设i为一int型指针,其值为2000,则执行语句: p+= 后,ip的值将变为2004,而不是2002

6.1.4.3 指针的算术运算 在实用中,仅使用指针的加减运算。应当说明的是,指针的 算术运算是以指针所属数据类型所占内存的大小为单位进行 的。即,设指针 p 的类型为 type,则有: p  n = p  n  sizeof(type) 例如,设 ip 为一 int 型指针,其值为 2000,则执行语句: ip += 2; 后,ip 的值将变为 2004,而不是 2002

61.5多级指针 由于指针是一个变量,它自身也需要占据一定的内存单元,所 以可以说明一个指针来存放指针变量的地址。这样的指针的数 据类型自然应当是某一种指针类型。例 t i=5, *ip =&i int *kipp =&ip: 这里,ipp就是一个类型为nt(整型指针类型)型的指针, 称为指向指针的指针。对于这样的指针,当用一个星号来访问 其内容时,访间的将是一个地址:用两个星号来访问它时,访 问的才是一个数据。例: cout < ipp ∥输出(假设)为0x2000 cout <<*ipp ∥输出(假设)为0x2100 cout < ip ∥同上 cout <<* ipp ∥输出为5

6.1.5 多级指针 由于指针是一个变量,它自身也需要占据一定的内存单元,所 以可以说明一个指针来存放指针变量的地址。这样的指针的数 据类型自然应当是某一种指针类型。例: int i = 5, *ip = &i; int **ipp = &ip; 这里,ipp 就是一个类型为 int*(整型指针类型)型的指针, 称为指向指针的指针。对于这样的指针,当用一个星号来访问 其内容时,访问的将是一个地址;用两个星号来访问它时,访 问的才是一个数据。例: cout << ipp; // 输出(假设)为 0x2000 cout << *ipp; // 输出(假设)为 0x2100 cout << ip; // 同上 cout << **ipp; // 输出为 5

62指针与数组 62.1用指针访问数组元素 在C++语言中,数组名实际是就是一个指针,它标识出数组 元素所占内存的首地址。然而,数组名相当一个常指针,即这 种指针的值是一个常量。因此,不得对数组名进行赋值和算术 运算。 利用数组名是一个指针这一事实,可以将数组名赋给一个指针, 然后通过对指针的算术运算来逐一地访问数组的各个元素,以 提高程序的执行效率和改善程序的灵活性。这实际上是指针最 普遍的用法

6.2 指针与数组 6.2.1 用指针访问数组元素 在 C++ 语言中,数组名实际是就是一个指针,它标识出数组 元素所占内存的首地址。然而,数组名相当一个常指针,即这 种指针的值是一个常量。因此,不得对数组名进行赋值和算术 运算。 利用数组名是一个指针这一事实,可以将数组名赋给一个指针, 然后通过对指针的算术运算来逐一地访问数组的各个元素,以 提高程序的执行效率和改善程序的灵活性。这实际上是指针最 普遍的用法

6.21.1指向数组元素的指针 由于数组元素是变量(下标变量),所以将指针指向数组元素 与将指针指向普通变量的用法没有什么区别。例: int iArr[10],*ip ip=&iA⑤]; ip=5; ∥等效于iAr3]=5

6.2.1.1 指向数组元素的指针 由于数组元素是变量(下标变量),所以将指针指向数组元素 与将指针指向普通变量的用法没有什么区别。例: int iArr[10], *ip; ip = &iArr[3]; *ip = 5; // 等效于 iArr[3] = 5

6.2.1.2通过指针访问数组元素 将指针指向数组的首地址,可以很方便地访问所有的数组元素 当对数组进行顺序访问时,其效率大大高于使用下标变量。例: int iArr[101, * ip= iArr for(nti=10;i<20;i++) p=1 1p ++

6.2.1.2 通过指针访问数组元素 将指针指向数组的首地址,可以很方便地访问所有的数组元素。 当对数组进行顺序访问时,其效率大大高于使用下标变量。例: int iArr[10], *ip = iArr; for(int i = 10; i < 20; i ++) { *ip = i * i; ip ++; }

点击下载完整版文档(PPS)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共31页,可试读12页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有