C++ 中,除了基本内建型态与指标外,其他的变数大都可看作是物件,指标是承接自 C 语言储存内存位址的概念,如果指标运用得宜就可以写出相当有效率的程式。

这个例子中,我们先宣告整数变数 n ,并且设定为 11

然后用 np 取得 n 的内存位址。须留意 np 的前面(等号左边)加星号表示是指标,而这个星号运算子 * 用为宣告指标,指标的型态 (type) 必须与取得内存位置变数的型态相符,等号右边则是利用取址运算子 (address-of operator) & 取得变数 n 的内存位置

下面则是利用反参考运算子 (dereference operator) ,同样是星号 * ,但是出现在等号的右边,由 t 取得 np 所储存内存位置变数的值,这里 np 储存的是 n 的内存位址, n 的值为整数 11

指标就是储存某个物件的内存位址,取址运算子用来取得变数或物件的内存位址,至于反参考运算子可从指标取得指向物件的值。

脑袋有没有比较清楚了呢?大型程式常常上上下下、左左右右都是 * 或 & ,我们在这里先把这个容易搞混的地方用简单的例子说明,另举一个例子如下,连带介绍参考 (reference) 与 new 关键字 (keyword)

总和以上来说, & 出现在等号左边时用为宣告参考,出现在等号右边是当作取址运算子,而 * 出现在等号左边时用为宣告指标,出现在等号右边则是反参考运算子。

有清楚了吗?不过 & 跟 * 还有其他用法唷!碰到再介绍好了,接下来我们先来谈谈变数命名规则。

1. 为什么指标运用得宜,可以写出相当有效率的程式?

2. 反参考运算子用于指标所指向变数的值,是否也可以用于设定指标所指向变数的值呢?

3. 参考的用途为何?指标跟参考可以互相替代吗?