首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于const的用法解决方法

2012-04-01 
关于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.常对象
[解决办法]

探讨

不是,我想知道的是,const既然把一个数不可变了,那么为什么要这么定义呢?这样定义有什么好处的?

热点排行