下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c中const的用法c中const的用法的用法如下:1. const在C和C+中的区别C+ 中的con st正常情况下是看成编译期的常量,编译器并不为co nst分配空 间, 只是在编译的时候将期值保存在名字表中 , 并在适当的时候折合在 代码中.所以在C+中 const修饰的量可以用在数组的定义中。而在C中,const是一个不能被改变的普通变量,既然是变量,就要占 用存储空间 ,所以编译器不知道编译时的值 .而且,数组定义时的下标必 须为常量在C语言中:const int size;这个语句是正确的,因为它被 C 编译器看作一个声明,指明在别的地方分配存储空间但在C+中这样写 是不正确的.C
2、+中 const默认是内部连接,如果想在C+冲到达以上的效 果,必须要用extern关键字.C+中 ,const默认使用内部连接.而C中使用 外部连接 .内连接:编译器只对正被编译的文件创立存储空间 ,别的文件 可以使用相同的表示符或全局变量.C/C+中内连接使用static关键字指 定.外连接:所有被编译过的文件创立一片单独存储空间.一旦空间被创建,连接器必须解决对这片存储空间的引用.全局变量和函数使用外部连接.通过 extern 关键字声明 ,可以从其他文件访问相应的变量和函数 . C+冲,是否为con st分配空间要看具体情况.如果加上关键字extern或 者取con st变量地址,那么
3、编译器就要为const分配存储空间.C+中定义常 量的时候不再采用define,因为define只做简单的宏替换,并不提供类 型检查2c on st指针和指向co nst的指针在C语言中con st指针表示该指 针是一个常量,一旦进行初始化完成之后就无法改变它指向的位置。指向 const 的指针说明使用这个指针无法改变其指向的地址处的 值,特别强调的一点是使用这个指针不能够改变。言外之意就是说,可以通过其他的方式改变。1. const 修饰函数的参数如果参数作输出用,不管它是什么数据类 型,也不管它采用 “指针传递还是 “引用传递, 都不能加 const 修饰,否 那么该参数将失去输出功能。c
4、onst 只能修饰输入参数:如果输入参数采用 “指针传递,那么加 const 修饰可以防止意外地改动该指针,起到保护作用。将“const修饰输入参数的用法总结如下:(1)对于非内部数据类型 的输入参数,应该将 值传递的方式改为“ cons引用传递,目的是提高 效率。例如将 void Func(A a) 改为 void Func(const A &a)。(2)对于内部数据类型的输入参数,不要将“值传递的方式改为“ cons引用传递。否那么既达不到提高效率的目的,又降低了函数的可理解性。例如 void Func(int x) 不应该改为 void Func(const int &x
5、)。2. const 修饰函数的返回值如果给以 “指针传递方式的函数返回值 加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返 回值只能被赋给加 const 修饰的同类型指针。例如函数con st char * GetStri ng(void);如下语句将出现编译错误: char *str = GetString();正确的用法是 const char *str = GetString();如果返 回值不是内部数据类型,将函数 A GetA(void) 改写为 const A &GetA(void)确实能提高效率。但此时千万千万要小心,一定要搞清楚函数究竟是想返回一个
6、对 象的 “拷贝还是仅返回 “别名就可以了,否那么程序会出错。例如:class AA & operate = (const A &other); / 赋值函数;A a, b, c; / a, b, c 为 A 的对象 a = b = c; / 正常的链式赋值 (a = b) = c; / 不正常 的链式赋值,但合法如果将赋值函数的返回值加 const 修饰,那么该 返回值的内容不允许被改动。上例中,语句 a = b = c 仍然正确,但是语句 (a = b) = c 那么是非法 的。3. const修饰成员函数关于 Const函数的几点规那么:a. const对象只 能访问con st成员函数,而非co nst对象可以访问任意的成员函数,包括 const成员函数.b. const对象的成员是不可修改的,然而const对象通过 指针维护的对象却是可以修改的 .c. const 成员函数不可以修改对象的 数据,不管对象是否具有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年治疗精神障碍药项目发展计划
- 2024年法人借款给公司的合同模板
- 2024年水路运输辅助服务项目建议书
- 别墅电梯检修方案
- 减肥零食课程设计
- 冰粉店运营管理方案
- 军旅幼儿园课程设计
- 果苗购销合同种苗购销合同2024年
- 2024-2025学年北师版中学数学八年级上册第二章实数2.2平方根(第2课时)教案
- 2024年全新夫妻婚内保证协议书
- 就业能力展示个人人工智能
- 护栏工程施工监理细则文本
- 2024年永州职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 2023年驻马店市事业单位统考真题及答案
- 2023-2024学年北师大版(2019)必修 第三册Unit 7 Art Lesson 3 A Musical Genius名师教学设计
- 护士长在护理信息化建设中的推动作用
- 中华民国史:政治、经济与社会变迁
- 数学史融入初中数学教学的调查研究
- 浙美版美术五上第1课《悠悠老街》课件5
- 钢结构焊接安全施工方案
- 一《求职和应聘》-【中职专用】高二语文同步课件(高教版2023·职业模块)
评论
0/150
提交评论