| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 797 人关注过本帖
标题:C++之const小议!
只看楼主 加入收藏
shan183
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-5-30
收藏
 问题点数:0 回复次数:2 
C++之const小议!
『1』const 限定的内容

  下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢?

  typedef char * pStr;

  char string[4] = “abc”;

  const char *p1 = string;

  const pStr p2 = string;

  p1++;

  p2++;

  答案与分析:

  问题出在p2++上。

  1)、const使用的基本形式: const char m;

  限定m不可变。

  2)、替换1式中的m, const char *pm;

  限定*pm不可变,当然pm是可变的,因此问题中p1++是对的。

  3)、替换1式char, const newType m;

  限定m不可变,问题中的charptr就是一种新类型,因此问题中p2不可变,p2++是错误的。

『2』字符串常量

  请问下面的代码有什么问题?

  char *p = “i'm hungry!”;

  p[0]= 'I'; 上面的代码可能会造成内存的非法写操作。分析如下, “i'm hungry”实质上是字符串常 量,而常量往往被编译器放在只读的内存区,不可写。p初始指向这个只读的内存区,而p[0] = 'I'则企图去写这个地方,编译器当然不会答应。 『3』const & 指针

  类型声明中const用来修饰一个常量,有如下两种写法,这里分别分析了用const限定不可变的内容是什么。 1)、const在前面

  const int nValue; //nValue是const

  const char *pContent; //*pContent是const, pContent可变

  const (char *) pContent;//pContent是const,*pContent可变

  char* const pContent; //pContent是const,*pContent可变

  const char* const pContent; //pContent和*pContent都是const

  2)、const在后面,与上面的声明等价

  int const nValue; // nValue是const

  char const * pContent;// *pContent是const, pContent可变

  (char *) const pContent;//pContent是const,*pContent可变

  char* const pContent;// pContent是const,*pContent可变

  char const* const pContent;// pContent和*pContent都是const

搜索更多相关主题的帖子: const 小议 
2005-06-09 11:15
qilin828
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-4-27
收藏
得分:0 
const小结:
这几天看了基本c++的书籍,看到了搂主的帖子,大胆的发表一下自己的体味
const就是常量,不能修改的意思
当const限定一个变量时,变量的内容就是定值,不能修改,否则编译时候报错
正因为如此,const限定的常量声明时一定要初始化
当然,const用于非指针时,很好理解,
而用于指针时有个简单的方法,就是从*号的地方划一条垂直线,const修饰哪个部分,它就是常量

const用于函数时出现三个位置:
例如:
const returnVal  function (const list_array)const;

形式不过如此
第一个const意思是:返回值是常量
第二个const意思是:函数过程中不能修改list_array的值
第三个const意思是:函数过程不能隐式的修改function参数的值


献丑了,如有错误,多多指教!!!

2005-07-18 16:44
620LCC
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2005-3-25
收藏
得分:0 

菜鸟 谢谢搂主


2005-11-29 10:48
快速回复:C++之const小议!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029498 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved