====== 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限定符的位置无所谓(参见:[[.:decl_organization|声明的组织形式]]),所以p的声明与下面是等价的: int_pointer const p; {{tag>C语言}}