跳转至

第十一章 指针


指针变量

现代计算机把内存分隔为字节(byte)。每个字节都有唯一的地址(address)。

变量占有一个或多个字节的内存,把第一个字节的地址称为变量的地址。

地址是一个整数,用指针类型(pointer)的变量来存储。

指针变量的声明

在变量名前加星号,来声明一个指针变量。如:

int *p;

此声明说明p是指向int类型的对象。

取地址运算符和间接寻址运算符

取地址运算符

得到一个变量的地址在它前面加'&'(取地址)。如:

int i;
int *p = &i;

间接寻址运算符

获取指针变量指向的存储空间首地址在它前面加*(间接寻址)。如:

*p = 10;

这个操作(*p)得到的就是变量的别名。该操作会修改变量的值。

指针赋值

只要是相同类型的指针,就可以相互赋值。这样它们就指向了相同的对象。

指针作为参数

指针可以做为函数的参数或返回值。

这些情况,可能会用到指针类型的形参:

  1. 需要得到多个结果,故而用指针传出去

  2. 传入的对象太大,没有必要执行拷贝操作

一般只有这些情况,返回一个指针类型才是安全的:

  1. 返回的是指针类型的参数

  2. 返回的是一个全局变量地址

  3. 返回的是一个static变量的地址