欢迎来到天天文库
浏览记录
ID:48255313
大小:161.00 KB
页数:43页
时间:2020-01-18
《第7章指针与引用.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、7.1指针的声明和操作7.2指针与数组7.3指针与函数7.4动态内存分配7.5引用第7章:指针与引用指针是保存内存地址的变量,是C++语言从C语言中继承来的重要概念,是C++语言最重要的特色之一。C++指针保存内存地址的功能使得程序员可以直接管理计算机内存。C++指针还可以用在函数的传址调用等场合,使得C++语言的功能变得非常强大。本章我们首先介绍指针的概念及其使用。同时,由于引用是C++语言引入的与指针密切相关的概念,本章也将作重点介绍。7.1指针的声明和操作数据在内存中的存储方式是:按其所属的数
2、据类型,占据一定数量的连续内存单元。一个变量对应的内存空间可用其首地址和数据类型来唯一确定。为了能像变量名那样来引用它所对应的内存空间,又能在程序中比较随机地访问其他的内存空间,c++引入了指针。为了能让指针访问不同的内存空间,指针本身存放的值必须是不同的内存空间首地址。因此,指针必须是一个变量。7.1.1数据存储计算机内存划分为内存单元,这些内存单元按其顺序进行编址。在程序运行时,系统将利用内存存储相关的数据。指针是用于存放内存地址的变量。可以将变量的地址保存在指针中,而无需知道变量地址的实际数值
3、。列出的数据类型并不是指针变量本身的类型,而是指针用于保存的地址值中存储的变量的数据类型,即指针所指向变量的数据类型。指针是一个变量,必须先声明,后使用。其声明的一般形式如下:数据类型*标识符;标识符给出的是指针变量名。“*”号说明其后的变量是一个指针变量。数据类型可以是C++语言中任一合法的类型。7.1.2指针的声明及使用1.2指针也可以和其他变量同时声明比如:inti,*p1;说明:声明了p1、p2两个指针。其中p1指向int型变量,p2指向double型变量。比如:int*p1;double*
4、p2;说明:声明了一个int型变量i和指针p1。注:声明了一个指针后,在使用前必须首先给它赋一个合法的值。否则,程序中对指针的使用就有可能导致系统崩溃。1.1对指针变量类型的声明1、指针的声明2.2数组名表示的是该数组的首地址值,如果声明指针指向一个数组,则可以使用下述赋值方法:intx[5],*px=x;把指针px初始化为指向数组intx[5]的指针,即指针px指向数组的第一个元素。不需要使用取地址运算符“&”。等价intx[5],px=&x[0];2.3如果需要用不同类型变量的地址给指针赋值,就
5、应该采用强制类型转换。例如:double*p2=(double*)&i比如:inti,*p1=&i;int*p2=0;说明:第1个声明就将指针p1的值初始化为变量i的内存地址;第2个声明将指针p2的值初始化为0。值为0的指针叫空指针。2.1与其他变量一样,我们可以在声明指针的同时,通过初始化给指针赋值。2、指针的赋值3、指针的运算符3.1运算符“&”功能:获取操作的对象指针。例如:inta[5],i;则“&i”用来获取变量i的指针,它的值是i内存空间的首地址,类型为“int﹡”3.2运算符“﹡”功能
6、:引用指针所指向的内存空间注:当其作为左值时,则被引用的内存空间是可写的;当其作为右值时,则“引用”的操作是读取被引用的内存空间的值。例如:int﹡p;...﹡p=8;//A,写入inta=﹡p;//B,读取指针的算术运算主要是指指针加上或减去一个整数值,即<指针>+n<指针>-n意义:指针加减一个整数值n,实际上是将指针的指向向上(减)或向下(加)移动n个位置,其结果仍是指针。7.1.3指针的算术运算指针的数据类型决定了指针所指向的内存大小的空间,因此相邻两个指向的间距是“sizeof(指针数据类
7、型)”个内存单元。指针加n的实际操作是使指针中的地址值加上sizeof(数据类型)*n指针减n的实际操作是使指针中的地址值减去sizeof(数据类型)*n7.1.4const指针在c++中,当用const关键字修饰指针时,可以限定指针的指向和对内存空间内容的修改,即将它们设置成常量。1.限定内存空间的内容的改变当const关键字放在指针数据类型名的前面或后面时,即const<数据类型>﹡<指针名>;<数据类型>const﹡<指针名>;则指针指向的内存空间的内容不能改变。2.限制指针指向的改变当con
8、st关键字放在指针名和“﹡”之间时,即<数据类型>﹡const<指针名>;则指针的值不能修改,且必须在定义的同时进行设定,此时称该指针为指针常量,且它不能为左值。例如:floatx,y;float*constp1=&x;//p1必须初始化p1=&y;//错误,p1不能为左值*p1=25;//合法,p1指向x的内存空间的内容可以修改3.限定指针的指向和内存空间内容的改变当在指针数据类型的前面或后面及在指针名和“﹡”之间都放有const关键字时,即const<数据类型>﹡
此文档下载收益归作者所有