C++ 指针
入门级文章,它可使初学者在很短的时间内掌握复杂的指针操作。虽然,现在的 Java、C#
等语言已经取消了指针,但作为一个 C++程序员,指针的直接操作内存,在数据操作方面
有着速度快,节约内存等优点,仍是很多 C++程序员的最爱。指针就像是一把良剑,就看
你怎么去应用它!
什么是指针?
其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,
而指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。这是一个非常重要的
概念,有很多程序和算法都是围绕指针而设计的,如链表。
开始学习
如何定义一个指针呢?就像你定义一个其它变量一样,只不过你要在指针名字前加上
一个星号。我们来看一个例子:
下面这个程序定义了两个指针,它们都是指向整型数据。
int* pNumberOne;
int* pNumberTwo;
你注意到在两个变量名前的“p”前缀了吗?这是程序员通常在定义指针时的一个习惯,
以提高便程序的阅读性,表示这是个指针。现在让我们来初始化这两个指针:ª
pNumberOne = &some_number;
pNumberTwo = &some_other_number;
&号读作“什么的地址”,它表示返回的是变量在内存中的地址而不是变量本身的值。在
这 个 例 子 中 , pNumberOne 等 于 some_number 的 地 址 , 所 以 现 在 pNumberOne 指 向
some_number 。 ª如 果 现 在 我 们 在 程 序 中 要 用 到 some_number , 我 们 就 可 以 使 用
pNumberOne。
我们来学习一个例子:
在这个例子中你将学到很多,如果你对指针的概念一点都不了解,我建议你多看几遍
这个例子,指针是个很复杂的东西,但你会很快掌握它的。
这个例子用以增强你对上面所介绍内容的了解。它是用 C 编写的(注:原英文版是用 C
写的代码,译者重新用 C++改写写了所有代码,并在 DEV C++ 和 VC++中编译通过!)
#include <iostream.h>
void main()
{
// 声明变量:
int nNumber;
int *pPointer;
// 现在给它们赋值:
nNumber = 15;
pPointer = &nNumber;
//打印出变量 nNumber 的值:
cout<<"nNumber is equal to :"<< nNumber<<endl;
// 现在通过指针改变 nNumber 的值:
*pPointer = 25;
//证明 nNumber 已经被上面的程序改变