avisnet's blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

摘自CSDN的一个贴子。

typedef int*   PINT;

const PINT p = NULL;

变量p是什么类型?

wanfustudio(雁南飞)

正确的解释是:int* const p
因为当用 typedef 定义了一种新的类型 PINT 后,const 修饰的对象就是PINT 而 PINT 本身是指针,于是const PINT 就是PINT 的值是常量
所以最后p被理解为 int 的const 的指针

zenny_chen (ACE Intercessor)

首先,const修饰词和其他类型修饰是并列的,即它们共同来修饰一个变量对象。

现讲一个简单的例子:

int const* p;

p的种属有两个,int 和 const*,因此p首先是个指针,不过该指针是const*类型的,即对p所指地址的内容进行const限定;然后它的取内容又是int类型的。

以上这种表示又可表示为:const int* p; 一样,const和int可以互换,但是不能和*进行交换,否则将是不同的语义。

int* const q;

q的种属有两种。首先它是int*类型,即指向int变量的指针,但是该指针同时又受到const的限制,使其值为const。

所以int const* 和int* const是不同的。

typedef int* PINT;

PINT为int*类型,该类型为一个整体。因此const PINT 同 PINT const的语义是完全一样的,都是PINT与const共同修饰变量,是该变量为用const来修饰int*指针变量。

posted on 2006-09-19 08:56  avisnet  阅读(240)  评论(0编辑  收藏  举报