文档介绍:C++大学基础教程
第6章指针和引用
北京邮电大学电信工程学院
计算机技术中心
2005-4-27 1
指针(Pointer)是C++和C的一
种数据类型。很多其他高级语言
也有类似的数据类型。引用
(Reference)则是C++所特有的
一种数据类型。指针和引用在概
念上和使用上都有相似之处,但
是也有重要的差别。
第六章指针和引用
指针的概念
指针的运算
指针和函数
指针和字符串
通过指针访问数组
指针访问动态内存
引用概念
指针的概念
指针和指针变量
指针是变量的地址。或者说是在内存中,存放
某种类型变量的地址。
例如,定义了整型变量a,a的地址就是一个指
针。
也可以不定义任何变量,只是指定内存某个地
址开始(如0x00430100)的4个字节存放整型
变量,这样的地址也是指针。
存放指针的变量就是指针变量。
2005-4-27 北京邮电大学电信工程学院计算机技术中心-5-
指针和指针变量
当声明了一个指针变量后,确定了三件事:
变量本身在内存中所分配的地址和字节数,指针变
量总是占有4个字节;
系统允许的地址范围,以及地址单元内可以存放的
内容;
指针变量可以进行的运算。
访问指针变量时,只能看到地址。只有通过这
个地址,才能访问地址单元中的内容。这样的
访问称为对于内存单元的间接访问。
2005-4-27 北京邮电大学电信工程学院计算机技术中心-6-
指针变量的声明和初始化
指针变量声明的格式是:
<类型名> *变量名1, *变量名2;
例如:
int *va1, *va2;
char *ch1, *ch2;
指针变量在声明后,变量的值(地址)是随机
的。这样的指针变量是不能安全的使用的。因
为其中的随机地址完全可能不是有效的数据地
址。
2005-4-27 北京邮电大学电信工程学院计算机技术中心-7-
指针变量的声明和初始化
在声明指针变量时的“*”,有两个含义:
声明变量va1、va2、ch1、ch2都是指针变量;
说明变量va1和va2的类型是(int *)型,即指向
整型变量的指针。va1和va2所指定的地址单元中,
只能存放整型数据。类似地,ch1和ch2的类型是
(char *)型,它们所指定的地址单元中,只能存
放字符。
它所指定的地址单元中存放的数据的类型。
2005-4-27 北京邮电大学电信工程学院计算机技术中心-8-
指针变量的声明和初始化
指针变量的初始化有两种方法:在声明时的初
始化和声明后的初始化。
声明指针变量时就进行初始化的格式是:
<类型名> *指针变量名=&变量名;
其中的变量名应该是已经声明或定义的同类型变量
名。例如:
char ch1=’Y’, ch2=’A’;
char *pch1=&ch1, *pch2=&ch2;
2005-4-27 北京邮电大学电信工程学院计算机技术中心-9-
指针变量的声明和初始化
也可以在声明指针变量后,用赋值的方式对它
们进行初始化。例如:
int i1=’Y’, i2=’A’;
int *pi1, *pi2;
pi1=&i1;
pi2=&i2;
没有初始化指针变量是不可以使用的。编译带
有这样的指针变量的程序,编译系统会给出警
告,而运行时会出现错误。
2005-4-27 北京邮电大学电信工程学院计算机技术中心-10-