响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:c:tips:const_with_pointer

const与指针

由于指针的特殊性,当使用const类型限定符时,不同的位置有不同的含义。

例如:

int * const p;

这里p是一个常量指针,即p的值不能修改,但p引用的对象的值可以修改。

而:

const int *p;

p的值可以修改,但p指向的对象的值不能修改。

当使用typedef时,需要更加小心。例如:

typedef int *int_pointer;
const int_pointer p;

这里p依旧是一个常量指针,而不是const int *p。注意typedef是语义上的范畴,不同于预处理,不再是字面上(lexical)的替换了。

事实上,由于const限定符的位置无所谓(参见:声明的组织形式),所以p的声明与下面是等价的:

int_pointer const p;
computer/c/tips/const_with_pointer.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1