指针与应用
1. 指针与指针变量的概念
2. 指针与地址运算
3. 指针与数组
4. 引用的基本概念
指针是c++里面的一个非常重要的概念,利用指针,可以操纵数据对象的内存地址,实现对数据对象的间接访问,表示复杂的数据结构,编写简洁高效的程序
引用是某个数据对象的别名,c++中引进引用这个概念的目的是为了简花函数调用时的参数传递。因此,引用经常出现在函数的参数和返回值中
*补充知识:引用运算符(&);指针运算符(*)和取地址运算符(&),强制类型转换运算符(类型()或(类型)),下标运算符([]),成员运算符(·),域运算符(::),创建动态运算符(new)和释放动态对象运算符(delete)
5.1 指针与指针变量的概念
本节介绍指针的基本知识,例如什么是指针,如何定义指针变量,指针的常用运算符以及几种特殊的指针。
5.1.1 指针与指针变量的概念
计算机内存由一系列的内存单元(在微型计算机中通常是一个字节)构成,这些内存单元被连续编写。于是每个内存单元有一个唯一的地址。
在程序执行过程中,对于程序中定义的两个变量,c++系统会根据变量的类型,在内存中分配由若干个地址连续的内存单元组成的存储单元,用于存放变量的值,变量的类型不同,储存单元的大小(内存单元素)也不相同。
我们把某变量的储存单元的首内存单元的地址称为该变量的地址,可以用地址运算符“&“来获取变量的地址。例如,若定义
int k=3;
float f=3.124;
则&k表示变量k的地址,&f表示变量f的地址。由于变量的地址指明了变量的储存位置,所以被说成是“指向“变量,并形象的称它为变量的指针
另外,我们可以定义变量来存放某个数据对象的指针,这种用来存放数据对象的变量我们称为指针变量。如果指针变量p中存放的数据对象x的地址(指针)(*p=&x)则称p指向数据对象v,或称p是指向数据对象v的指针变量。
这样一来,我们访问了内存中的数据对象有了两种方法:
第一种是用变量访问。由于编译系统在源程序编译时,会自动将变量名映射为它所在的存储单元的地址。因此,用变量名访问时,用户不必关系变量的实际地址,只要在程序中给出变量名,由于计算机将变量名映射为内存地址,再由地址对内存中数据对象进行存取。另一种是用指针访问,即利用数据对象的指针变量来访问。具体的说,先由指针变量的值得到数据对象的存储地址,根据该地址来存取数据对象。很显然,这是一种间接访问方式。
值得注意的是。虽然指针变量和普通变量都代表内存中的某个存储单元。在内存中都都反应为地址,但是普通变量的存储单元中存放的是数据,而指针变量的存储单元中存放的是地址。