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