4.2.2 声明指针
除了在名称前面用星号表明是指针变量以外,指针的声明与普通变量类似。例如,为了声明long类型的指针pnumber,我们可以使用下面的语句:
- long* pnumber;
该语句中星号离类型名称更近。如果愿意,我们也可以将其写成下面的形式:
- long *pnumber;
编译器根本不介意我们怎样写,但变量pnumber的类型是"指向long类型的指针",因此使星号离类型名称更近往往能更清楚地表明这一点。无论选择哪种书写指针类型的方法,结果都相同。
我们可以在同一条语句中混合普通变量和指针的声明。例如:
- long* pnumber, number = 99;
像前面一样,这条语句声明了变量pnumber,其类型为"指向long类型的指针",同时还声明了long类型的变量number。一般来说,将指针的声明同其他变量分开更好,不然可能使人对所声明变量的类型产生误解-- 尤其当星号离类型名称更近时。下面的语句看起来更清楚,而且将声明分开写在两行上使我们能够分别给它们添加注释,这有助于使程序更易于理解。
- long number = 99; // Declaration and
initialization of long variable - long* pnumber; // Declaration of
variable of type pointer to long
在C++(www.cppentry.com)中,使用以字母p开始的变量名表示指针是通用惯例,这使我们能更容易看清程序中哪些变量是指针,从而使程序更易于理解。
下面我们先举例说明指针的工作过程,暂时先不管指针有什么用途。我们很快就将学习如何使用指针。假设有一个long类型的变量number(上面声明过),其包含的数值是99,还有一个变量pnumber,其类型为"指向long类型的指针",可用来存储变量number的地址。但是,我们如何获得变量的地址呢?
取址运算符
我们需要的是取址运算符&。该运算符是一元运算符,用于获得变量的地址,又名引用运算符-- 本章稍后再讨论如此命名的原因。为了设置刚才讨论的指针,可以使用下面这条赋值语句:
- pnumber = &number; // Store address of number in pnumber
该操作的结果如图4-5所示。
我们可以使用&运算符获得任何变量的地址,但需要有适当类型的指针来存储地址。例如,如果我们希望存储double型变量的地址,则相应的指针必须被声明为double*类型,即"指向double类型的指针"。
|
| (点击查看大图)图 4-5 |