Dan Saks的《const T vs.T const》的一文中,有这样一句话:
Although C and C++ read mostly from top-tobottom and left-to-right, pointer declarations read, in a sense, backwards.
即:下面的式子的读法是从右向左读。
T const *p;
<--------- pointer to a const T
T *const p;
<--------- const pointer to a T
一、指针常量
int const *p;
p是一个指向整形常量的指针。p内保存的常量的地址可以变,而地址指向的常量不能改变。
int a; int const *p = 0;
p = &a; //可以
*p = 1; //错误,不能更改p指向的对象的值
|
所以,指针常量定义时必须初始化,因为后面不能更改指针p指向的对象的值。
二、常量指针
int * const p;
p是一个常量指针,其保存的地址不能更改。
int a; int * const p = 0;
*p = 1; //可以 p = &a; //错误
|
|
文件: |
Dan_Saks_const_T_vs_T_const.pdf |
大小: |
48KB |
下载: |
下载 | |
阅读(716) | 评论(0) | 转发(0) |