第十一章 指针
指针变量
现代计算机把内存分隔为字节(byte)。每个字节都有唯一的地址(address)。
变量占有一个或多个字节的内存,把第一个字节的地址称为变量的地址。
地址是一个整数,用指针类型(pointer)的变量来存储。
指针变量的声明
在变量名前加星号,来声明一个指针变量。如:
int *p;
此声明说明p是指向int类型的对象。
取地址运算符和间接寻址运算符
取地址运算符
得到一个变量的地址在它前面加'&'(取地址)。如:
int i;
int *p = &i;
间接寻址运算符
获取指针变量指向的存储空间首地址在它前面加*
(间接寻址)。如:
*p = 10;
这个操作(*p)得到的就是变量的别名。该操作会修改变量的值。
指针赋值
只要是相同类型的指针,就可以相互赋值。这样它们就指向了相同的对象。
指针作为参数
指针可以做为函数的参数或返回值。
这些情况,可能会用到指针类型的形参:
-
需要得到多个结果,故而用指针传出去
-
传入的对象太大,没有必要执行拷贝操作
一般只有这些情况,返回一个指针类型才是安全的:
-
返回的是指针类型的参数
-
返回的是一个全局变量地址
-
返回的是一个static变量的地址