《c中const的用法.docx》由会员分享,可在线阅读,更多相关《c中const的用法.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、c中const的用法c中const的用法c中const的用法的用法你知道吗?下面我就跟你们具体介绍下c中const的用法的用法,希望对你们有用。c中const的用法的用法如下:1.const在C和C+中的区别C+中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以在C+中const修饰的量能够用在数组的定义中。而在C中,const是一个不能被改变的普通变量,既然是变量,就要占用存储空间,所以编译器不知道编译时的值.而且,数组定义时的下标必须为常量.在C语言中:constintsize;这个语句是正确的
2、,由于它被C编译器看作一个声明,指明在别的地方分配存储空间.但在C+中这样写是不正确的.C+中const默认是内部连接,假如想在C+中到达以上的效果,必需要用extern关键字.C+中,const默认使用内部连接.而C中使用外部连接.内连接:编译器只对正被编译的文件创立存储空间,别的文件能够使用一样的表示符或全局变量.C/C+中内连接使用static关键字指定.外连接:所有被编译过的文件创立一片单独存储空间.一旦空间被创立,连接器必须解决对这片存储空间的引用.全局变量和函数使用外部连接.通过extern关键字声明,能够从其他文件访问相应的变量和函数.C+中,能否为const分配空间要看详细情况
3、.假如加上关键字extern或者取const变量地址,则编译器就要为const分配存储空间.C+中定义常量的时候不再采用define,由于define只做简单的宏替换,并不提供类型检查.2.const指针和指向const的指针在C语言中const指针表示该指针是一个常量,一旦进行初始化完成之后就无法改变它指向的位置。指向const的指针讲明使用这个指针无法改变其指向的地址处的值,十分强调的一点是使用这个指针不能够改变。弦外之音就是讲,能够通过其他的方式改变。比方:charch=cconstchar*ptr=*ptr=a/这样做是不允许的ch=a/这样做完全能够,并且*ptr的值也是a下面是从网
4、上摘抄的对const不错的总结const用法小结:const最常用的就是定义常量,除此之外,它还能够修饰函数的参数、返回值和函数的定义体。1.const修饰函数的参数假如参数作输出用,不管它是什么数据类型,也不管它采用指针传递还是引用传递,都不能加const修饰,否则该参数将失去输出功能。const只能修饰输入参数:假如输入参数采用指针传递,那么加const修饰能够防止意外地改动该指针,起到保护作用。将const修饰输入参数的用法总结如下:(1)对于非内部数据类型的输入参数,应该将值传递的方式改为const引用传递,目的是提高效率。例如将voidFunc(Aa)改为voidFunc(const
5、Aa)。(2)对于内部数据类型的输入参数,不要将值传递的方式改为const引用传递。否则既达不到提高效率的目的,又降低了函数的可理解性。例如voidFunc(intx)不应该改为voidFunc(constintx)。2.const修饰函数的返回值假如给以指针传递方式的函数返回值加const修饰,那么函数返回值即指针的内容不能被修改,该返回值只能被赋给加const修饰的同类型指针。例如函数constchar*GetString(void);如下语句将出现编译错误:char*str=GetString();正确的用法是constchar*str=GetString();假如返回值不是内部数据类型
6、,将函数AGetA(void)改写为constAGetA(void)确实能提高效率。但此时千万千万要小心,一定要搞清楚函数究竟是想返回一个对象的拷贝还是仅返回别名就能够了,否则程序会出错。函数返回值采用引用传递的场合并不多,这种方式一般只出如今类的赋值函数中,目的是为了实现链式表达。例如:classAAoperate=(constAother);/赋值函数;Aa,b,c;/a,b,c为A的对象a=b=c;/正常的链式赋值(a=b)=c;/不正常的链式赋值,但合法假如将赋值函数的返回值加const修饰,那么该返回值的内容不允许被改动。上例中,语句a=b=c仍然正确,但是语句(a=b)=c则是非法
7、的。3.const修饰成员函数关于Const函数的几点规则:a.const对象只能访问const成员函数,而非const对象能够访问任意的成员函数,包括const成员函数.b.const对象的成员是不可修改的,然而const对象通过指针维护的对象却是能够修改的.c.const成员函数不能够修改对象的数据,不管对象能否具有const性质.它在编译时,以能否修改成员数据为根据,进行检查.e.然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段都可修改,自然此时的const成员函数是能够修改它的c中const的用法c中const的用法的用法你知道吗?下面我就跟你们具体介绍下c中const的用法的用法,希望对你们有用。c中const的用法的用法如下:1.const在C和C+中的区别C+中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是推荐度: