由指针定义形式可以知道,指针是一个统称,实质上可以细分为很多类型的指针,如有以下定义:
则ch、p和d显然不是同一种类型的指针,虽然3个指针变量都是用来保存地址的,但是ch中只能保存char型单元的地址,p中只能保存整型单元的地址,而d中只能保存double型单元的地址。由此可见,当指针的基类型不同时,指针的类型也是不一样的。
实质上基类型的重要性远不止如此,还应该有更深入的理解。假如指针q中保存的内存地址是0012FF7C,根据前边所学应该知道,0012FF7C仅仅是一个字节的地址,那么从该地址开始将向下取多少个字节作为一个完整的存储单元呢?读取到的字节又该如何来理解呢?这就要由基类型来确定。如果q的基类型是int,那么将从0012FF7C开始取连续的4个字节,并将这4个字节作为一个整型单元来使用;如果q的基类型是float,虽然仍然是从0012FF7C开始向下连续取4个字节作为一个存储单元,但是该存储单元将作为一个float类型的单元来使用;当然如果其基类型为double,则将从0012FF7C开始向下取得8个连续的字节作为一个double单元来使用。(www.xing528.com)
总之,指针是一个内存单元的地址,指针变量是一个可以用来保存内存单元地址的变量,其关系如图7-2所示,其中i是一个整型单元,其值为10;而pointer是一个指针变量,其值为00ff7c,是整型变量i的地址。当然,pointer作为一个变量,也会占用内存单元,也有自己的地址,它的地址是00ff88。后续章节中,在不引起混淆的情况下,有时我们也直接称呼一个指针变量为指针。
图7-2 变量名、内存单元及内存地址关系
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。