c中const的用法_第1页
c中const的用法_第2页
c中const的用法_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论