9.7 指针简介

究竟什么叫做指针?一般来讲,指针是一个其数值为地址的变量(或更一般地说是一个数据对象)。正如char类型的变量用字符作为其数值,而int类型变量的数值是整数,指针变量的数值表示的是地址。指针在C中有很多用途,本章将研究把它作为函数参数的方法和理由。

如果您将某个指针变量命名为ptr,就可以使用如下语句:

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

阅读 ‧ 电子书库

对于这个语句,我们称ptr“指向”pooh。ptr和&pooh的区别在于前者为一变量,而后者是一个常量。当然,ptr可以指向任何地方:

阅读 ‧ 电子书库

这时ptr的值是bah的地址。

要创建一个指针变量,首先需要声明其类型。假设您想把ptr声明为可以存放一个int数值的地址,就需要使用下面介绍的新运算符。让我们来研究这种新运算符。

9.7.1 间接运算符:*

假定ptr指向bah,如下所示:

阅读 ‧ 电子书库

这时就可以使用间接(indirection)运算符*(也称作取值(dereferencing)运算符)来获取bah中存放的数值(不要把这种一元运算符和表示乘法的二元运算符*相混淆)。

阅读 ‧ 电子书库

语句ptr=&bah;以及语句val=*ptr;放在一起等同于下面的语句:

阅读 ‧ 电子书库

由此看出,使用地址运算符和间接运算符可以间接完成上述语句的功能,这也正是“间接运算符”名称的由来。