C++ const关键字培训.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Cconst关键字培训

C++ const关键字培训 worksoft 冷鹏 先谈C/C++宏定义 C/C++中宏定义:#define VariableName VariableValue 优点: 1、避免了意义模糊的数字出现,使得程序语义流畅清晰 2、可以很方便地进行参数的调整与修改 3、提高了程序的执行效率,由于使用了预编译器进行值替代,并不需要为这些常量分配存储空间,所以执行的效率较高 缺点:预处理语句仅仅只是简单值替代,缺乏类型的检测机制。这样预处理语句就不能享受C++严格类型检查的好处,从而可能成为引发一系列错误的隐患 思考:宏定义与const有什么关系?为什么先谈宏? C++为什么增加const 定义:const DataType VariableName = VariableValue ; 目的:取代预编译指令(宏定义),消除它的缺点,同时继承它的优点。(能做到吗?) 1、以const 修饰的常量值,具有不可变性,这是它能取代预定义语句的基础 2、它也同样可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改 3、C++的编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高,同时,这也是它取代预定义语句的重要基础 4、像一个普通的变量定义一样,它会由编译器对它进行类型的检测,消除了预定义语句的隐患 const用法 1、const datatype VariableName = VariableValue ; (宏定义格式你想起来了吗?) 2、定义const指针,并说出他们的意义。 int const *p; const int *p; int *const p; const int const *p; cosnt int *const p; const *int const p; 请问看官:你晕了吗? int const *p; 理解:定义了一个指针p,它是一个指向int类型的指针,且这个指针是指向的变量(对象)是const的。 这样理解对吗???? 根据理解下列代码能通过编译吗?为什么? int a = 6; p = a; *p = 7; 根据理解:说明指针不是const的,那么改变指针的值是可行的,而改变指针指向变量的内容是不可行的。 这个定义你明白了吗???? const int *p; 理解:定义了一个指针p,它是一个指向int类型的指针,而这个int类型的内容是const的。 这样理解对吗???? 根据理解下列代码能通过编译吗?为什么? int b = 5; p = b; *p = 9; 根据理解:说明指针不是const的,那么改变指针的值是可行的,而改变指针指向变量的内容是不可行的。 这个定义你明白了吗???? 你有什么发现吗? const int *p 等于int const *p int *const p; 理解:定义了一个指针p,它是一个指向int类型的指针,而这个指针是const的。 这样理解对吗???? 根据理解下列代码能通过编译吗?为什么? int b = 5; p = b; *p = 9; 根据理解:说明指针是const的,那么改变指针的值是不可行的,而改变指针指向变量的内容是可行的。 这个定义你明白了吗???? *const int p,这样定义可以吗? 你还清醒吗? const int const *p; 理解:定义了一个指针p,它是一个指向int类型的指针,而这个int类型的内容是const的。而这个int类型也是const的。 这样理解对吗???? 为什么? 1.int const *p = const int *p;那么:const const int*p能成立吗? 肯定不能,编译出现错误。 是否需要休息?还是抓狂??? cosnt int *const p; 理解:定义了一个const指针p,它是一个指向int类型的指针,而这个指针指向的对象是const的。 这样理解对吗???? 根据理解下列代码能通过编译吗?为什么? int b = 5; p = b; *p = 9; 根据理解:指针是const的,指针指向的内容是const的,我编译器凭什么让你修改???? 你能理解吗???? 还知道前面讲了些什么吗? const *int const p; 理解:定义了一个const指针p,且指向一个int类型的变量(对象),而这个对象是const的。 这样理解对吗???? 为什么??? 你见过C/C++中定义指针时:把*号写在类型的左边的吗? 按照C/C++ 变量定义规则,那么const是一个数据类型。因为有cosnt*,这个成立吗? 休息一会,告诉你技巧 介绍了这么多,你还知道con

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档