4.2 指针
指针(即指针变量)是C+ +语言最大的功能之一。一个指针是一个特定类型数据的存储地址,比如一个变量的地址。
与其他类型变量一样,指针变量也必须要声明。指针变量声明的一般形式为:
<数据类型>*<变量名>;
其中,<数据类型>是指针所指对象的类型,在C+ +中可以指向任何C+ +类型。<变量名>是指针变量名。
指针使用两种特殊的运算符——*和&。
一元(单目)运算符&用于返回其操作对象的内存地址,其操作对象通常为一个变量名。例如:
ptr=&total;
把变量total的内存地址存到指针变量ptr中。该地址是total变量在计算机内存中的存储地址。
第二个与指针相关的运算符是*,它与&运算符作用相反。作为一元运算符的*用于返回其操作数所指对象的值,因此,该运算符要求其操作对象为一个指针。
1指针和地址
(1)指针说明
从指针的定义可知,指针是用所指对象类型来表征的。在使用任何指针变量之前必须先给它赋一个所指合法具体对象的地址值。
如何使一个指针指向一个具体对象:
①使用new运算符(或malloc和alloc等函数)给指针分配一个具体空间。
②将另一个同类型的指针赋给它以获得值。
③通过&运算符指向某个对象。
(2)指针运算
尽管指针中存放的是变量的地址,但在C+ +中指针只能进行如下运算。
①指针和整型量可以进行加减
②若p1,p2为指针,当p1和p2指向同一类型时,可以进行赋值。
③两个指向同一类型的指针,可进行= =,>,<等关系运算,其实就是地址的比较。
④两个指向同一数组成员的指针可进行相减,结果为两个指针之间相差元素的个数。
注意:两指针不能相加。