请描述C++中const关键字的作用,c++const关键字的作用
在C语言程序中,const关键字也是经常使用的关键字,那么使用const关键字的目的是什么呢?其实在程序中使用const关键字的主要目的是向用户传达设计者的一些意图。
其实无论我们用const关键字声明变量还是参数,其目的都是告诉用户这个变量或者参数的应用目的。正确使用关键字const可以使编译器有效地保护那些不希望被改变的变量或参数,防止它们被代码无意中修改。所以使用const关键字可以避免一些不必要的错误。
我们已经解释了const关键字的作用。接下来,我们将进一步讨论const关键字的用法:
(1)由1)const关键字修改的变量
const关键字最常见的用途是修改变量。由const关键字修改的变量可以被视为只读属性。比如:
const int a=10
int b=0;
b=a;(一)这种说法是正确的。
a=b;(二)此语句错误,编译不正确,因为A有只读属性。
虽然由const关键字修改的变量具有只读属性,但它不能简单地等同于常数。其实C语言中const关键字修饰的变量只是语法常量。
此外,用const关键字修饰的变量在声明时必须初始化。这是显而易见的。因为它是只读的,所以当然必须有一个确定的值可用于赎回,而不是不确定性。例如:
const int a=10//合法用法
const int a;//非法,导致编译错误
还应该注意,用const关键字定义的变量是全局的。所以使用的时候需要注意。
通常用define来定义一个宏,比如#define PI 3.1415976。以后无论什么时候需要用到pi,我们都可以直接使用PI,预处理器会在编译时用3.1415976代替所有PI。这样很方便,但是因为编译器不会检查,如果使用不慎,就会引入错误,而且这样的错误很难被发现。而且,我们无法获取PI的地址,也无法传递指向PI的指针或引用。
所以我们经常用const关键字修改的变量来代替宏。const声明的变量虽然增加了分配空间,但是可以保证类型安全,得到它的指针。Const消除了预处理程序的值替换带来的不良影响,提供了良好的类型检查形式和安全性,所以理解const关键字对我们的编程有很大的帮助。
(2)指针变量被2)const关键字修改
除了普通变量之外,Const关键字还经常用于修改指针变量。当然,在讨论之前,我们需要明确两个概念:const指针和指向常量的指针。Const pointer是指指针变量的值一旦初始化就不能改变,所以必须初始化。指向常数的指针是其值为常数的指针。
声明指针变量时,const关键字的位置决定了它所定义的指针变量的含义。例如,我们定义:
(a)int * const p;该语句指示一个指向整形的常量指针。它不能指向其他变量,但是指向的值(变量)可以修改。
(b)const int * p;该语句表示一个指向整型常量的指针,它所指向的值不能被修改。
(c)int const * p;这个语句和B的意思一样,表示一个指针,指向一个值不能修改的整型常量。
(d)常数int *常数p;该语句表示一个指向整型常量的常量指针。它不能指向其他常数,它所指向的值也不能修改。
(e)int常数* const p;这个语句和d的意思一样,都是指向整型常量的const指针。它不能指向其他常数,它所指向的值也不能修改。
写定义很混乱,但是有一些技巧可以帮助我们理解。看看右边const关键字后面的内容。当type在const关键字的右边时,表示值是常量;当const关键字的右边是指针变量时,意味着指针本身是常量。
(3)由3)const关键字修改的函数参数
Const关键字也常用于修改函数的形参。当关键字const修改一个函数参数时,通常用在参数是指针或引用,并且只能修改输入参数的情况下。如果输入参数是按值传递的,函数会自动生成一个临时变量来复制参数,所以参数不需要保护,所以不用const修饰。
const关键字修改函数的输入参数形式如下:void函数(const int * a);或者void函数(const int a);没关系。C标准库中有很多这样的应用,比如字符串处理函数:
字符串复制函数:char char *strcpy(char *strDest,const char * str src);
返回字符串长度函数:intstrlen(const char * str);
以上两个函数是用const关键字保护源字符串,防止无意的修改改变源字符串的值。
显然,使用const关键字修改函数参数是为了保护输入参数。调用函数时,用对应的变量初始化const常量,然后在函数体中,根据const修改的部分进行常量量化。如果参数为const int * a,则传递的指针所指向的内容不能改变,从而保护了原指针所指向的内容;如果形参是const int a,就不能改变传递的引用对象,这样就保护了原对象的属性。
(4)由4)const关键字修饰的函数的返回值
Const关键字有时用于修改函数的返回值。在这种情况下,一般用它来修改返回的指针或引用,以保护指针所指向或引用的内容不被修改。例如:
const char * function(void);
这种用法很少见,所以这里只提一下。
综上所述,const关键字不仅功能强大,而且对我们的编程也很有帮助,前提是我们真的了解它的用法。
欢迎关注:
想更方便及时的阅读相关文章,请关注我的微信微信官方账号【木南创智】
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。