欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    关键字constWord下载.docx

    • 资源ID:5257201       资源大小:19.76KB        全文页数:9页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    关键字constWord下载.docx

    1、不能修改它指向的对象。a = 10;b;*pi = &*pi = 20;b = 20;c;*pi = 30;-eg2:const char* pc = asdf; pc3 = apc = ghik-eg3:const char* step3 = left,righthop;step2 = skipstep21 = i二、常指针常量: type* const var_name;可改对象。要把指针本身,而不是它指向的对象声明为常量,采用运算符*const,必须初始化,通过该指针可以修改它指向的对象,但它不可以指向其他的对象。int* const pi = & /等于int* (const pi)

    2、= &pi本身为常量,不能指向其他对象。三、指向常量的常指针变量: const type * const var_name;值与对象均不能改。要使两个目标都是常量,两者都要声明为const 。eg:const int* const pi = & /相当于: (const int*)(const pi) = &不能修改它的对象。不能指向其它对象。eg2:const char* const pc = eg3:const char* const step3 = 一般的,当声明中出现 const 描述符时,它修饰的是紧跟其后的声明元素或者在 const 成员函数声明中函数的 this 指针。注意:可以

    3、将变量的地址赋给指向常量的指针变量,不会因此有什么害处,但是,常量的地址不能赋给无约束的指针。int a = 1;const int c = 2;const int* p1 = &const int* p2 = &int* p3 = & /非法!int* const p4 = & 指针常量 p4 能够改值。const int* const p5 = &const-常量标志符,用来定义常量变量,能产生#define NUM 5 一样的作用,但是更高级的作用体现在对程序的安全性的加强,以及对编译的优化上。总结一下const的用法。1、const int NUM = 5; 有些变量赋初值后不希望被更

    4、改,可以采用const来标志,当程序企图改变这些变量时,编译时会有错误提示。2、void Compute( const &T); 引用参数传递的用法可以用来避免复制一些大类型的参数,节省内存,但是赋予了的调用函数更改权限,当参数不希望被更改时,可以才采用这种调用方式。既节省了空间,又保障了安全性。3、和指针组合使用产生的四种用法:a非常量数据的非常量指针;b非常量数据的常量指针;c常量数据的非常量指针;d常量数据的常量指针。这些其实都是对权限的限制,出于安全性方面的考虑。用法都顾名思义,我解释一下常量指针4、类中一些用法;可以定义const对象,即该对象不能被更改,跟第一点相同。const成员

    5、函数 void Compute( int ) const;:该函数不改变对象的属性-值。而且const对象不能调用非const成员函数,即使该函数没有改变对象的值也不可以,会产生编译错误。这些都是出于安全性方面的考虑。不过当成员函数不改变对象的值的时候,推荐把函数定义为const类型,这样当程序企图改变对象时,编译会提示出错。而且用const定义寒暑,可以优化编译,提高性能。书上写的,原因我也不清楚:)估计涉及到编译原理方面的知识,并且和编译器的具体设计有关。目前所了解得就这么多_Const(2)今天让指针常量,常量指针的说法搞糊涂了,原理明白,但是叫法上的区分糊涂呵呵!const是C特别是C

    6、+中经常遇到的东西,能灵活的运用可以体现你的CC+的水平。1. 常量和预编译 我们都知道在C中用到常量往往是通过预编译来实现,但是这样最大的缺点是不能够进行类型检查,使用const修饰变量就可以客服这样的缺点。 常量在定义时必须初始化,除非它是extern2. const与指针(重点) 一般来讲我们可以定义5中类型的指针: *pdata1; const int *pdata2; int *const pdata3; const int * const pdata4; int const * pdata5; 第一个和第四个比较简单:pdata1是普通的指针;pdata4是指向常量的指针常量:指向

    7、和指向的内容都不能改变。 对于1,3我们看const与*的位置:如果const在*之前。那么就是常量指针,否则就是指针常量, 如: char * const a 0,b; 是指针常量,const只属于a不属于b char const * a; 是常量指针 const char * a; 也是常量指针 我自己总结了这样的记忆方法:前固数,后固址!就是说const在*前是固定数据,在后是固定地址。大家还可以看出 “数”正好在“址”的按照音序的前面,这样理解记忆就好了。通过上面的讲解,我想大家见到以后肯定不会出错了。但是怎样区分这两种说法呢?“常量指针”“指针常量”类比是最好的方法我经常这样用:“函

    8、数指针”“数组指针”。“函数指针”是指向函数的指针,“数组指针”是指向数组的指针。那么,“常量指针”是指向常量的指针,也就是内容“数据”不能改变。指针常量就是另外的一种意思。最后需要注意的是:指针常量在定义时必须初始化,因为后面再也不能修改。3. 常量和函数常量和函数的联姻还是出于效率的考虑。这也是const的最常用的用途之一。 3.1 const修饰函数的参数,参数传递时按值传递需要复制一份,当数据量很大时,是很昂贵的。用了指针把地址传过去就可以了。如果不想让函数改变参数的的值的话就用const修饰。 void fun(const int *p); 3.2 const修饰函数的返回值,还是出

    9、于效率的考虑当函数返回时,也是需要临时变量的,如果用指针(当最好是引用C+的新特性)就可以省去这样的开销。为了保证数据的安全性,返回的数据可能不想让用户随便改动,那么使用const : const char *getname(); 3.3 在C+中修饰成员函数,防止改变对象的状态(成员变量): char *player : Getname() const,const的成员函数不能够调用非const的函数。那么是不是const函数什么都不能改呢?不是。C+中提供了mutable 关键字来修饰变量,使得它可以在任何的函数中可以修改。有三种方法来定义const型指针:(1)const*;该语句的作用

    10、是:定义指针变量所指数据值为常量,即:指针变量所指数据值不能改变,但指针变量值可以改变。例如:floatx,y;constfloat*p=&x;/定义指针变量p所指数据值*p为常量 *p=25;/错误,p所指变量x数据值不能用*p形式进行改变 p=&y;/正确,可改指针变量p的值 x=25;/正确,变量x的值可以改变 (2)*const定义指针变量值为常量,即:指针变量值不能改变,但指针变量所指数据值可以改变。p=&/定义指针变量p的值为常量 /正确,p所指变量x数据值可以用*p形式进行改变 /错误,指针变量p的值不能改变 用这种形式定义的指针变量,必须在定义时赋初值。(3)const定义指针

    11、变量值为常量,指针变量所指数据值为常量。即:指针变量值不能改变,指针变量所指数据值也不能改变。/定义指针变量p为常量 /错误,不能改变指针变量p的值 用这种形式定义指针变量,必须在定义时赋初值。(1)因为引用变量类同于指针变量,所以这三种定义形式完全适应于引用类型变量。(2)定义const类型指针的目的是提高程序的安全性,用const可限制程序随意修改指针值。指针主要用作函数参数,以限制在函数体不能修改指针变量的值,或不能修改指针变量所指数据值。Const(3)关键字const有什么含意?我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。去年Dan Saks已

    12、经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着“只读”就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?const int a;int const a;const int *a;int * const a;int const * a const;/*/前两个的作

    13、用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:; 关键字const的作用是为给读你代码的人传达非常有用的信息,实

    14、际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。Volatile8. 关键字volatile有什么含意?并给出三个不同的例子。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说

    15、就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 并行设备的硬件寄存器(如:状态寄存器) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 多线程应用中被几个任务共享的变量回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难。假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究

    16、一下,看一下这家伙是不是直正懂得volatile完全的重要性。 一个参数既可以是const还可以是volatile吗?解释为什么。 一个指针可以是volatile 吗? 下面的函数有什么错误:int square(volatile int *ptr)return *ptr * *ptr;下面是答案: 是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。const因为程序不应该试图去修改它。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。 这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:int a,b;a = *ptr;b = *ptr;return a * b;由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:long square(volatile int *ptr)int a;return a * a;


    注意事项

    本文(关键字constWord下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开