c++(指针和引用)

c++(指针和引用)

ID:40546370

大小:117.00 KB

页数:10页

时间:2019-08-04

c++(指针和引用)_第1页
c++(指针和引用)_第2页
c++(指针和引用)_第3页
c++(指针和引用)_第4页
c++(指针和引用)_第5页
资源描述:

《c++(指针和引用)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、指针与引用指针是C++中的一个重要概念,利用指针,可以操纵数据对象的内存地址,实现对数据对象的间接访问,表示复杂的数据结构,编写简洁高效的程序。引用是某个数据对象的别名,C++中引进引用这一概念的目的是为了简化函数调用时的参数传递,因此,引用经常出现在函数的参数和返回值中。一指针与指针变量的概念1、指针的基本概念计算机内存由一系列的内存单元(在微型计算机中通常是一个字节)构成,这些内存单元被连续地编址。于是,每个内存单元有一个惟一的地址。在程序执行过程中,对于程序中定义的每个变量,C++系统会根据变量的类型,在内存中分配由若

2、干个地址连续的内存单元组成的存储单元,用于存放变量的值。变量的类型不同,存储单元的大小(内存单元数)也不相同。我们把某变量的存储单元的首内存单元的地址称为该变量的地址,可以用地址运算符“&”来获取变量的地址。例如,若定义intk=3;floatf=3.14;则&k表示变量k的地址,&f表示变量f的地址。由于变量的地址指明了变量的存储位置,所以被说成是“指向”变量,并形象地称为变量的指针。另外,我们可以定义变量来存放某个数据对象的指针,这种用来存放数据对象指针的变量称为指针变量。如果指针变量P中存放了数据对象v的地址(指针),

3、则称p指向数据对象v,或者称p是指向数据对象v的指针变量。这样一来,我们访问内存中的数据对象就有了两种方法。第一种是用变量名访问。由于编译系统在对源程序编译时,会自动将变量名映射为它所在的存储单元的地址。因此,用变量名访问时,用户不必关心变量的实际地址,只要在程序中给出变量名,由计算机将变量名映射为内存地址,再有地址对内存中的数据对象进行存储。另一种是用指针访问,即利用指向数据对象的指针变量来访问。具体地说就是,先由指针变量的值得到数据对象的存储地址,再根据该地址来存取数据对象。很显然,这是一种间接访问方式。值得特别注意的是

4、,虽然指针变量和普通变量都代表内存中的某个存储单元,在内存中都被映射为地址,但是普通变量的存储单元中存放的是数据,而指针变量的存储单元存放的是地址。2定义指针变量C++规定所有变量在使用前务必先定义,指针变量也不例外。定义指针变量的语法格式如下:类型*指针变量名1,*指针变量名2,…,*指针变量名m;其中,“*”是说明符,说明其后的标志符是个指针变量,“类型”表示本指针变量所指向的数据对象的数据类型。例如:int*p1;//p1是一个指向int型数据对象的指针变量float*p2;//p2是一个指向float型数据对象的指针

5、变量char*p3;//p1是一个指向char型数据对象的指针变量另外,还可以在定义指针变量的同时,对其进行初始化,使其指向某一数据对象。例如:intk,*p1=&k;//p1指向int型变量k在对指针初始化时,要先定义对象。比如下例就是错误的:char*p3=&c,c;//错误这是因为编译char*p3=&c时,变量c还未安排存储单元,它的地址不存在。在C++程序中,我们还可以根据需要,用赋值的方法不断改变指针变量指向的数据对象。例如:inta,b,c,*p1=&a;…p1=&b;…p1=&c;但是,要注意的是一种类型的指

6、针只能指向同类型的数据对象。例如:int*p;charc;p=&c;//错误。p为int型,c为char型是错误的。原因在于int型的指针指向了char型数据对象。同样地,不同类型指针之间不能进行赋值操作。例如:inta,*p1;charc,*p2=&c;p1=p2;是错误的。如果必须把p2的值赋给p1,使p1指向char型变量c,可以通过强制类型转换的方法。p1=(int*)p2;有人可能会问,既然任何类型的指针都可以指向内存中的任一位置,为什么还要规定指针的数据类型呢?因为指针的所有运算都与它指向的数据对象的类型密切相关

7、,所有C++规定一种类型的指针只能指向同类型的数据对象。3用指针访问变量在用初始化或赋值方式使指针变量指向某一数据对象后,我们可以借助于指针运算符“*”(或称间接访问运算符)来存取该数据对象。指针运算符“*”的语法格式为:*指针变量它用来表示指针变量所指向的同类型的数据对象。例如:inta=3,b=2,c=1,*p=&a;cout<<*p;//p指向a,*p表示ap=&b;cout<<*p;//p指向b,*p表示bp=&c;cout<<*p;//p指向c,*p表示c该程序的输出结果是:321。对于指向结构体变量(或共用体变量

8、)的指针,可以使用成员运算符“.”或指向运算符“->”,来访问它所指向的结构体变量(或共用体变量)的成员。例如:#includestructstudent{intnum;charname[10];floatscore;};students1={10001,"王力",

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。