首页 理论教育指针初始化-《C++程序设计基础教程》

指针初始化-《C++程序设计基础教程》

【摘要】:指针初始化有几种方式:指针对象可以被一个具有相同类型的对象初始化。下面的例子将整型指针ip赋给另一整型指针ip2:int*ip2=ip;此时,这两个指针指向同一内存空间,可用图1.8表示。图1.8指针与指针所指对象如果程序员想强制赋给指针另一种类型变量的地址,则必须显式进行类型转换。如要将一个整型指针的值赋给浮点数指针,可以采用以下语句:float*fp=ip;通过直接分配内存地址得到初值。

指针初始化有几种方式:

(1)指针对象可以被一个具有相同类型的对象初始化。

例如,初始化一个整型指针:

int i=10;

int*ip=&i;

由于ip是一个指针,所以不能将变量i的值直接赋给它,而应将变量i的地址赋给它。符号“&”是一个取地址运算符,它能得到所跟变量的内存地址,所以&i将返回变量i的内存地址。

(2)由另一个同一类型的指针初始化,同一类型的指针之间可以直接赋值

下面的例子将整型指针ip赋给另一整型指针ip2:

int*ip2=ip;

此时,这两个指针指向同一内存空间,可用图1.8表示。(www.chuimin.cn)

图1.8 指针与指针所指对象

如果程序员想强制赋给指针另一种类型变量的地址,则必须显式进行类型转换。但由于不同类型的数据在内存占据的空间不同,不同类型之间的强制类型转换很可能会导致数据错误,因而读者在使用时要小心。如要将一个整型指针的值赋给浮点数指针,可以采用以下语句:

float*fp=(float)ip;

(3)通过直接分配内存地址得到初值。

下面的例子分配了一块可以存放整数的内存,并把该内存地址赋给了指针(运算符new将在后面详细介绍):

可以给指针变量赋予空值(NULL),这表明它不指向任何一个对象。指针也可以没有类型,或者说类型为void*,这样的指针可以指向任何对象,因而也称为通用指针。C++允许把指向任何一个类型的指针赋给通用指针。而使用通用指针时,也需要显式地指出通用指针所指数据的类型。下面例子使用了通用指针:

运算符“*”可以取得指针变量所指的值,如上例ip指向i,则要取得i的值可以用*ip得到:

可以用如下方式对i赋值:

即*ip是一个左值,它代表指针ip所指的对象,也就是i。