精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>C、C++语言基础>>Re:二个指针的问题

主题:Re:二个指针的问题
发信人: 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,
一任他笑京剧痴。

[关闭][返回]