快捷搜索:

C语言类型修饰符Const的使用

C语言类型修饰符Const的使用

  Const也是应该广泛的关键字,表示后面定义有可能是一个不变的常量,但是跟各种数据类型定义组合,能演变出复杂含义.Const 主要有如下应用情况1. 声明后面是一个常量2. 如果跟指针组合,将形成复杂的组合情况3. 作函数参数数的修饰符.表示不能修改这一参数的值.主要是指针4. 作函数返回值, 表示调用函数不能修改这一参数数的值.主要是指针Const 让人感到复杂是的,他的位置可以与被修饰的数据类型互换!其它的修饰符没有这样用法.这样换一般情况下是等效的,如 const int c1= 5; 等效于 int const c1=5;但是,我说是但是,如果数据类型是一个指针,互换一样位置表示完全不同含义,所以const 这 一个用法经常是面试官用来折磨嵌入式C面试者的法宝之一.参看如下定义 int b = 500; const int* a = &b; [1] int const *a = &b; [2] int* const a = &b; [3] const int* const a = &b; [4]这种定义要看 const 的位置来确定他的用法.const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的 右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无 关),这种情况下不允许对指针指向内容进行更改操作,如不能*a = 3 ;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常 量。Const的初始化 Const 在运行时不能修改值,所以只能在定义时进行初始化.作为参数和返回值的const修饰符 其实,不论是参数还是返回值,道理都是一样的,参数传入时候和函数返回的时候,初始化const变量1 修饰参数的const,如 void fun0(const A* a );表示a的指向内容不准修改的. 2 修饰返回值的const,如const A * fun2( );表示a指南内容不准备修改 Const 的好处是•关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)• 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。• 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。Const 一大副作用是,在函数调用时,你必须要把参数调成const 所要求的形式才能被编译调用.有时这样花很大功夫才能做到

您可能还会对下面的文章感兴趣: