1
C语言程序设计
1.6.9 小 结 五

小 结 五

指针类型是C语言中一种特殊的数据类型。指针变量中存放的是另一个变量的地址。

1.指针变量的定义

①一般定义形式

  类型定义符*指针变量标识符;

其中,类型定义符是指针变量所指向的目标变量的数据类型,可以是C语言中各种基本数据类型及结构、联合、函数等。

注意:定义符“*”仅说明所定义的是指针变量,而不是普通变量,应与在语句中使用的取指针所指向的目标变量的内容的单目运算符“*”相区别。

②二级指针的定义

  类型定义符**指针变量标识符;

③指针型数组的定义

  类型定义符*指针数组名[n];

在定义指针的同时可对其初始化,初始化的值只能是已定义变量的地址。

2.指针变量的运算

指针运算的实质是地址运算,指针可以进行以下4种运算。

①取地址运算(&)和取内容运算(*

取地址运算一般用于给指针变量赋值,使指针指向确定数据存储单元。指针变量必须先赋值再使用。取内容运算形式:

  *指针变量名

引用指针所指向的目标变量,取地址和取内容互为逆运算。

②指针与整数n的加减运算(包括增1和减1运算)

指针与整数做加减运算的实质是用于调整指针所指向的对象,即从指针当前位置向前或向后移动n个数据项。指针移动的实际地址与数据项所占的存储长度有关,通常表示为:

  p±n*sizeof(数据类型)

③指针相减的运算

指针相减的运算是用于求指向同一数据对象的两个指针间数据项的个数。

④指针的关系运算

“〉”和“〈”运算用于比较两个同型指针的地址值的大小。“==”和“!=”用于判断两个指针是否指向同一数据。

3.指针与数组

指针与数组有密切的关系,数组名是指向数组起始地址的指针常量,当将数组名a赋予指针变量p时,即将指针p指向数组的起始地址,则*(p+i)与a[i]等效,因此使用指针法访问数组元素与使用下标法一样方便,但使用指针更加高效灵活,尤其是使用指针及其运算处理字符数组时更为方便灵活。

在用指针访问数组元素时,必须要注意指针的当前位置。

指针数组是指针的集合,它的各个元素都是指向同种数据类型的指针,指针数组常用于处理多个字符串。后面介绍的命令行参数是指针数组的一个重要运用。

4.指针型指针

又称为多级指针,是指指针所指向的对象又是一个指针,对指针型指针所指向的目标变量的访问是多重间接访问。