十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
如果const用于定义一个非指针的普通变量,就是定义了一个常变量,这个变量以后的值在生命期内是不能改变的,因此也必须对该变量进行初始化,在C++中要在类的初始化列表中初始化。
我们提供的服务有:成都做网站、网站建设、微信公众号开发、网站优化、网站认证、乐都ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的乐都网站制作公司
如果const用于定义一个指针变量,不同的写法有不同的意思。例如const char *p和char* const p 前者表示p指向的内容是不能够改变的,后者是指p本身的值是不能够改变的。
如果用于修饰函数返回值,效果和修饰变量一样。
const修饰类的成员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰。
const修饰类对象表示该对象为常量对象,在对象的生命期中其中的任何成员都不能被修改。
关于const用法还是比较复杂的,还有很多用法,我也没有总结详尽,以后遇到可以自己写程序测试。
const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。
const关键字使用非常的灵活,这一点和php差别很大,php中const用来在类中定义一个常量,而在c中,const因位置不同有不同的作用,因情景不同有不同的角色,使用起来也是非常的灵活。
一、const用来修饰普通的变量(指针变量除外)的时候,const type name 和 type const name 这两种形式是完全等价的,都表示其是常量,不能进行修改。
二、const用来修饰指针变量的时候,分为以下四种情况
1、const type *name :这种情况下,const修饰的指针变量name所指向的type类型对象,也就是说指向的这个对象是不能进行修改的,因为其是常量,而指针变量确实可以进行修改的。
2、type const *name :这种情况下,const修饰的指针变量name所指向的type类型对象,意思完全同上,只是颠倒了以下顺序。
3、type * const name :这种情况下,const修饰的指针变量name,也就是说这个指针变量的值是不能进行修改的,但是指针变量所指向的对象确实可以修改的。
4、const type * const name :这种情况下,const修饰的指针变量name以及指针变量name所指向的对象,也就是说这个指针变量以及这个指针变量所指向的对象都是不能进行修改的。
扩展资料
使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。另外CONST在其它编程语言中也有出现,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。
在c中,对于const定义的指针,不赋初值编译不报错,int* const px;这种定义是不允许的。(指针常量定义的时候对其进行初始化)int const *px;这种定义是允许的。(常指针可以再定义的时候不初始化)
但是,在C++中int* const px;和const int* const px;会报错,const int* px;不报错。必须初始化指针的指向int* const px = x;const int* const px=x;强烈建议在初始化时说明指针的指向,防止出现野指针!
参考资料来源:百度百科—CONST
const 表示常量,相当于宏定义,只能读取,不能修改。
常变量:const 数据类型 符号常变量 = 数值
如:const float PI=3.14;
指针常量:
数据类型 *const 指针变量=变量名
如:char *const p="abc";
const修饰的是指针变量,而不是指针的值,所以指针指向的值是可以修改的。
常指针:
const 数据类型 *指针变量=变量名
或者是
数据类型 const *指针变量=变量名
这是指针指向的值就是不可以改变的。
还有一种情况就是指针变量本身不可以修改,指针指向的值也是不允许修改的,就是指针常量和常指针组合,这种称为
常指针常量:
const 数据类型 *const 指针变量=变量名
或
数据类型 const *const 指针变量=变量名
还有一个比较重要的就是常函数:这个我自己还是前一段时间刚刚理解,建议你看看这个网页:。
个人的一些笔记,希望可以帮助你
const 的使用
const经常用来修饰一个值不能改变的量,安全,并且能消除存储操作
const的几种用法:
(1) 说明值常量
(2) 说明指针
(3) 说明函数参数及其返回值
(4) 说明类的常量和成员函数
const 说明值常量
值常量的说明一般放在头文件或者文件的开始部分,也可以放在类中进行说明
(1) 说明符号常量,表明符号代表的是一个常量,语法:
类型const常量名=表达式,常量名=表达式……
例如:double const PI=3.14; const double PI=3.14;
(2) 说明数组常量,语法格式:
类型const数组名[大小]={初值表};
const类型 数组名[大小]={初值表};
(3) 说明对象常量,语法格式:
类名const对象名;
const 类名 对象名;
(4) 说明引用常量
(5) const与C语言中的#define的差别
无参宏不是符号常量,没有数据类型,没有值,在内存中不分配地址。它在预处理时做宏替换,不可能做类型检查。
const定义的常量是符号常量,有数据类型,也有值,且其值不可改变,在内存中有地址,编译时做类型检查。
Const和指针
Const和指针的三种经典组合
(1) 指向常量的指针——const int *p;
(2) 常指针——char *const pc=’a’;
(3) 指向常量的常指针——const char *const pc=’a’
指向常量的指针(指针指向一个不可变量)
指针在指向有一个常量后,不能通过指针修改这个常量,但是可以指向一个新的常量,例如:
Const char *pc=”ABCD”;
Pc[3]=’a’;不合法,企图修改原来指向的常量
Pc=“WERT”;合法指向另外一个常量
常指针
要把指针变量中的值(也就是地址)声明为常量,采用以下语法:
类那些*const指针名[=初值;]
这样定义的指针变量中存放的指针是个常量,称为常指针。定义后,该指针指向固定的内存单元,不能再指向其他内存单元,通过它可以修改所指单元里存放的内容。例如:
Char *const pc=”ABCD”;
Pc[3]=’a’;合法,指针指向的对象可以修改
Pc=”QWER”;不可以,指针的指向不可以修改
指向常量的常指针
指针变量中存放的指针本身和指针所指向的对象都是不可以改变的。
例如:
Const char *const pc=”ASDF”;
Pc[3]=’a’;不合法,不能改变指针所指对象的值
Pc=”QWER”;不合法,不能改变指针的指向
Const说明函数参数和返回值
用const限定函数参数和返回值,是const最重要的用法。用const修饰函数参数意味着传过来的实参在函数中是不能被修改的。一般情况下不需要,但是在用指针和引用传值的场合,为避免实参被修改,就用const修饰,更安全。
修饰函数的返回值,意味着该返回值不能被修改。如果传值并返回地址,const将保证该地址上的内容不会被改变。这就意味着该函数不能作为左值使用,在这种情况下,const通常也是与引用和指针一起使用的。
类中的const
1. 常成员的函数
2. 常数据成员
3. 常对象