发信人: jele(浮点)
整理人: wenbobo(2003-08-23 10:57:27), 站内信件
|
我们说某个变量p是“指针”这个大类型,意思就是说变量p中存放的乃是某一内存地址。例如p中存放的是变量q的内存地址,则我们就说p是指向变量q的指针。指针变量的size只与操作系统的位数有关,例如32位操作系统下,指针变量p的size总是4字节。
在实际使用指针时,尤其涉及到指针运算的时候,我们又经常需要指出指针所指向的那个变量的类型,这个类型我们称之为指针的“基类型”。例如变量声明int *p; 我们可以说变量p的类型是“指针”,但这么说并没有包括p的全部含义,因而我们会说p是指向整型变量的指针。
至于“指针的类型”这一说法,我们都假定了一个前提,那就是某个变量首先必须是个“指针”,然后再谈这个指针的类型。基于这个前提,“指针的类型”实际上就变成“指针所指向的那个变量的类型”的简称了,是同一个意思的。例如我们定义int *p;我们可以“说”指针p的类型是整形的(注意在这里的说法是“指针p的类型”),更通常的说法是p是个整形指针,说p的“指针的类型”是整形就很别扭。但在描述变量p的类型的时候,我们需要说明p的“类型”为(int *)(注意这里又不说p的指针类型了),它的完整意义就是p是个指针,其基类型为int。
其实看看这个就更清楚了,大伙平时经常这么做的:
char abc[10], *p;
p = (char *) abc;
^^^^^
从另外一个角度来说若非要给指针分类来区别“指针的类型”的话,倒是有这两种类型的指针:普通的指针和指向类成员变量的指针。这两种指针的确是不同的,许久之前我曾写过一篇关于指向类成员变量的指针的帖子,好像还在,可以参考一下。
【 在 boy8765xlb 的大作中提到:】
:提二个问题:
: 1、对于语句int *p;
: 我们知道,p是一个指针。那么,请问这个指针的类型是什么?
: 是int还是int *?
: 在一本书上说:指针和它所指向的变量必须类型相同。如果按照这个思路
:
:......
---- 岁寒香冷懒赋诗,
书远梦沉朗日迟,
最近不再玩DOS,
一任他笑京剧痴。
|
|