Chinaunix首页 | 论坛 | 博客
  • 博客访问: 156298
  • 博文数量: 39
  • 博客积分: 2713
  • 博客等级: 少校
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-25 00:05
文章分类

全部博文(39)

文章存档

2012年(1)

2011年(2)

2010年(36)

分类: C/C++

2010-11-12 22:09:39

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
下载: 下载

阅读(1982) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~