致开

const小结

下面一句估计都能够理解
const int i = 5;
它的意思是指, 你不能修改变量 i 的值。

看看下面一句:
int i = 5;
const int *pi = &i;
pi指向什么了? const int *是什么类型了?
const int * 表示一个指向带有const限定符的int类型的指针。
不太好理解?意思就是你不能做如下操作。
int i = 5;
int j = 6;
const int * pi = &i;
*pi = 2//Erro!
pi = &j; //OK

再看看下面一句声明。
int i = 5;
int * const pi = &i;
这里面 int * const 表示一个带有const限定符的指向int类型的指针。
意思是,这个指针只能指向这个变量,不能再指向其他变量。
int i = 5
int j = 6;
int * const pi = &i;
*pi = 2//This is allowed.
pi = &j; //Error!

猜猜下面的语句能否执行?
int i = 5;
int * pi = &i;
const int * cpi = pi;
答案是可以的。
反过来则不可以。
int i = 5;
const int * cpi = &i;
int * pi = cpi; //Error!
原因在于,C语言标准规定,赋值左边的操作符必须包括右边变量的所有限定符。

猜猜下面的最后一句语句能否执行。
int i = 5;
int * pi = &i;
int ** ppi = π
const int ** cppi = ppi;
答案是不可以的。为什么了?
const int ** 表示一个指向 带有const限定符的int 类型的指针的指针。
int ** 表示一个指向int类型的指针的指针。
两者类型不一样,所以无法赋值。

posted on 2008-05-16 16:53 Xiaxi 阅读(121) 评论(0)  编辑 收藏 引用 所属分类: C/C++ Language Features


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜