char *s1 , *s2 ;
在这里定义了三个指针变量pd、s1和 s2,其中指针变量pd的基类型为double类 型,在指针变量pd中,只能存放double类 型变量的地址,指针变量s1和s2的基类型 为char类型,在指针变量s1和s2中只能存 放char类型变量的地址。又如:
int **p ;
以上是定义了一个指向指针的指针变 量p,该指针变量p只能存放基类型为int类 型的指针变量的地址。又如:
int *pi , **p , k ; 以上语句是在同一语句中,同时定义 了指针变量pi、指向指针的指针变量p和变 量k,这是允许的。
7.2.2 指针变量的基类型的作用
任何一个指针变量都是用于存放它所 指向变量的地址,只要能存放地址就可以 了,为何还要区别不同的基类型呢?
注意:变量名前的星号“*”不可省略, 若省略了星号“*”说明符,就变成了普通 整型变量。
int是数据类型名,在这里,说明了pi 和pj是两个指向整型(int类型)变量的指 针,也就是说变量pi和pj中只能存放int类 型变量的地址,这时我们称int是指针变量 pi和pj的基类型。又如:
double *pd ;
其原理是:不同的数据类型变量,C 语言系统为它们开辟的存储空间的字节数 是不同的,
int类型的数据存储空间是2个字节, float类型的数据存储空间是4个字节,……,
系统表示每一个存储空间的地址时,是取 该存储空间的第1个字节的地址作为该变量 存储空间的地址。那么当一个基类型为int 类型的指针变量p指向了一个int类型的变 量a时,是将该变量a所占的2个字节的存储 空间中的第1个字节存储空间的“地址”存 入指针变量p中,如图7-2(b)所示。
图7-2 指针和指针所指向的对象