今天要介紹的是c/c++語言的關鍵字-const, 簡單來說,const是constant,常數的縮寫, 常數就是恆常不變的數值, 一但經初始化就無法再改變其值, 而且必須在宣告的時候便初始化 基礎語...

今日要详细介绍的是c/c 語言的关键词-const,

简易而言,const是constant,常数的简称,

常数就是说恆常不会改变的标值,

一但经复位就没法再更改其值,

并且务必在宣布的情况下便复位

基本英语的语法课堂教学

譬如说立即宣布const int但未给初值会错误:

const int number; //不正确: const务必复位

务必宣布时即给出初值,而且过后没法改动,

例如:

const double PI = 3.14;

PI = 4.0; //不正确: 常数没法改动

到这里才行应当还算好懂,

殊不知若宣布一个const指标值,

状况则複杂的多

const 指标值

char c = 'A';

const char * p1 = &c;

char * const p2 = &c;

const char * const p3 = &c;

const 指标值一样务必复位,

但能够放到char *前边或后边(或前后左右都放),

这三种宣布方法有哪些幺差别呢?

回望一下指标值是意味着一个详细地址,

一般情况下,你能更改详细地址自身,或是通过详细地址去更改里边的內容,

如範例:

char c = 'A';

char other = 'B';

char * p = &c;

p = &other; //更改p偏向other的详细地址

*p = 'D'; //通过详细地址改动other变化的內容

因此const能够放到2个地区,

能够了解为二种不一样的限定,

一是限定「不能更改详细地址自身」,

二是限定「不能通过详细地址去更改变化的內容」

一般教材都是提议要了解变化宣布要从右到左阅读文章(尽管我认为仿佛那样也没比较好阅读文章),

总之倘若自身有一套方式记牢每一宣布是做什幺用的就可以了

char * const p2 = &c; 限定不能更改详细地址自身

变化宣布从右见到左,

见到const用于装饰 p2,

表达p2这一物品自身是一个const,

p2也是一个指标值,

因此意味着指标值自身特指的详细地址不可以更改

char c = 'A';

char * const p2 = &c;

*p2 = 'B'; //合理合法,可通过详细地址更改值

char other = 'C';

p2 = &other; //不合理合法,不能更改指标值自身

const char * p1 = &c; 限定不能通过详细地址去更改变化的內容

const用于装饰型别char,

表达这一指标值偏向的char变化是不可以更改的,

也就不可以通过详细地址去更改变化的內容,

如範例:

char c = 'A';

const char * p1 = &c;

*p1 = 'B'; //不合理合法,不能通过详细地址更改值

char other = 'C';

p1 = &other; //合理合法,能够更改指标值自身

const char * const p3 = &c; 既不可以更改详细地址自身,也不可以通过详细地址去更改变化的內容

再加2个const的宣布则较为单纯性,

主观臆断尔就是说什幺都不可以更改,

无论想改动指标值自身或者改內容都不好

char c = 'A';

const char * const p3 = &c;

*p3 = 'B'; //不合理合法,不能通过详细地址更改值

char other = 'C';

p3 = &other; //不合理合法,不能更改指标值自身

拓宽思索: 变化是const,但偏向它的指标值并不是会如何?

考虑到一段程式码:

int main()

{

const char c = 'A';

char * const p = &c;

*p = 'D';

return 0;

}

人们设置字元c是一个const char,

依据const的实际效果,字元c一旦设置就不可以改动

再设置p是一个不可以更改详细地址的指标值偏向c(但依据上述实际效果表明,p特指的內容更改则不受到限制),

那幺我想问一下能否通过*p = 'D';更改变化c的值呢?

给你想一想,猜一下結果怎样?

叮~ 回答是程序没法反编译根据,

const char的实际效果促使字元c没法被改动,

char * const p = &c的实际效果又可以改动指标值特指的內容,

我觉得自相矛盾吗?

就如你玩一款手机游戏,拿着绝世武器去砍一只恶魔,

武器装备实际效果: 进攻损害没法被免减

恶魔专业技能实际效果: 本连击不容易遭受一切损害

那幺到底是矛会赢還是盾会赢呢?

也许只能更确立的实际效果界定或者评测才知道

晦涩难懂的c语言语句,【c/c 学习心得】晦涩难懂的const关键词,const v.s. 指标值...相关推荐

  1. 不正确的c语言语句是,最基本的C语言语句是( )

    最基本的C语言语句是( ) 更多相关问题 [单选] ADSL.MODEM最好在什么温度下工作(). [单选] 连接计算机网卡和ADSL猫的五类双绞线为(). [单选] 如ADSL分离器位置安装不正确可 ...

  2. C语言语句知识结构大学霸IT达人

    C语言语句知识结构大学霸IT达人 语句是代码执行过程中的最基本单位,每个语句都能实现一个或多个动作.语句最显著的标识就是结尾的英文分号.分号表示该行代码为一条语句.在C语言中语句可以分为表达式语句,控 ...

  3. python语言句块的标记_Python语言语句块的标记是()

    [简答题] [单选题]Listen( 1.1-1) and answer: Karen Wood is ___________. [单选题]下列说法正确的是 ( ). [判断题]旅游的实质实人类追求自 ...

  4. C语言 | 语句概述

    C语言语句的作用和分类 1.9种控制语句 if()...else.. //条件语句 for()... //循环语句 while()... //循环语句 do...while() //循环语句 cont ...

  5. Verilog语言语句介绍

    Verilog语言语句介绍 结构语句 initial语句 always语句 赋值语句 阻塞赋值 非阻塞赋值 使用方法 条件语句 if_else语句 case语句 结构语句 共有两个重要的结构语句 in ...

  6. 不正确的c语言语句是,【单选题】下列不正确的C语言语句是( )。 A. x=y=5; B. x=1,y=2; C. y=int x; D. x++;...

    [单选题]下列不正确的C语言语句是( ). A. x=y=5; B. x=1,y=2; C. y=int x; D. x++; 更多相关问题 1千克棉花的14与2千克铁的12一样重.______. 在 ...

  7. define不是c语言语句,define是语句

    关于define 语句 #define最后加不加分号跟define本身没有关系,而取决于你使用的地方. 如: #define MY_VALUE 5; 如果这样用: int x =MY_VALUE: / ...

  8. python 语句块标记_什么是python中的语言语句块标记

    什么是python中的语言语句块标记 发布时间:2020-07-16 10:05:20 来源:亿速云 阅读:172 作者:Leah 什么是python中的语言语句块标记?很多新手对此不是很清楚,为了帮 ...

  9. php语句以什么符号结束,c语言语句以什么结束,c语言语句的结束标志

    c语言语句以什么结束C语言句子以什么结尾,c语言的每一句都是用英语输入的[:]结束一个语句,不同的编辑语言有不同的结束符号,Java和C也是基于[:]作为一行语句结束的标志,也没有必要使用[:]作为一 ...

最新文章

  1. Snowball 关系提取,2篇知乎博客
  2. 中国移动手机网络私有网络连接问题解决办法
  3. Acwing第 23 场周赛【完结】
  4. php简单实例,php实现推荐功能的简单实例
  5. 【电脑使用经验】怎么查看无线网络中电脑的IP地址?
  6. git commit查找提交的关键字
  7. Makefile之自动生成依赖(8)
  8. Centos7内核版安装nginx环境问题及解决方法
  9. AI队列长度检测:R-CNN用于使用Keras进行自定义对象检测
  10. PAT乙级 1005 继续(3n+1)猜想 (25分)
  11. 数据库连接池配置和优化
  12. KEYCODE_DPAD_CENTER 和 KEYCODE_ENTER
  13. HTML5+Activex+Singr+ABP+MongoDB
  14. 关于深度学习caffe for Windows编译入门
  15. 中望cad文字显示问号怎么办_如果CAD工程图显示乱码怎么办?
  16. MFC:Ribbon界面设计
  17. CTPN在windows的CPU上运行经验
  18. 京瓷打印机m5521cdn_京瓷Kyocera ECOSYS M5521cdn 驱动
  19. 如何下载B站高清视频
  20. 微信浏览器无法下载APK文件的解决方案

热门文章

  1. 微信开发(3)微信支付
  2. uniapp-map基本使用
  3. [Power Query] 分组依据
  4. matlab约当消去法,Gauss-Jordan 高斯约当消去法
  5. V---双相机定位贴合的原理和实现过程
  6. 荣耀70什么时候发布 荣耀70发布时间曝光
  7. 代码详细教程+文档+PPT+源码等]SSM框架美妆商城全套|电商购物计算机专业毕业论文java毕业设计网站
  8. TSC打印机,利用javascript实现连续扫码自动打印,配置说明
  9. 微信小程序云开发CMS中WebHook功能的使用方法
  10. 中国故事 张亚勤 访谈