晦涩难懂的c语言语句,【c/c 学习心得】晦涩难懂的const关键词,const v.s. 指标值...
今天要介紹的是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. 指标值...相关推荐
- 不正确的c语言语句是,最基本的C语言语句是( )
最基本的C语言语句是( ) 更多相关问题 [单选] ADSL.MODEM最好在什么温度下工作(). [单选] 连接计算机网卡和ADSL猫的五类双绞线为(). [单选] 如ADSL分离器位置安装不正确可 ...
- C语言语句知识结构大学霸IT达人
C语言语句知识结构大学霸IT达人 语句是代码执行过程中的最基本单位,每个语句都能实现一个或多个动作.语句最显著的标识就是结尾的英文分号.分号表示该行代码为一条语句.在C语言中语句可以分为表达式语句,控 ...
- python语言句块的标记_Python语言语句块的标记是()
[简答题] [单选题]Listen( 1.1-1) and answer: Karen Wood is ___________. [单选题]下列说法正确的是 ( ). [判断题]旅游的实质实人类追求自 ...
- C语言 | 语句概述
C语言语句的作用和分类 1.9种控制语句 if()...else.. //条件语句 for()... //循环语句 while()... //循环语句 do...while() //循环语句 cont ...
- Verilog语言语句介绍
Verilog语言语句介绍 结构语句 initial语句 always语句 赋值语句 阻塞赋值 非阻塞赋值 使用方法 条件语句 if_else语句 case语句 结构语句 共有两个重要的结构语句 in ...
- 不正确的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一样重.______. 在 ...
- define不是c语言语句,define是语句
关于define 语句 #define最后加不加分号跟define本身没有关系,而取决于你使用的地方. 如: #define MY_VALUE 5; 如果这样用: int x =MY_VALUE: / ...
- python 语句块标记_什么是python中的语言语句块标记
什么是python中的语言语句块标记 发布时间:2020-07-16 10:05:20 来源:亿速云 阅读:172 作者:Leah 什么是python中的语言语句块标记?很多新手对此不是很清楚,为了帮 ...
- php语句以什么符号结束,c语言语句以什么结束,c语言语句的结束标志
c语言语句以什么结束C语言句子以什么结尾,c语言的每一句都是用英语输入的[:]结束一个语句,不同的编辑语言有不同的结束符号,Java和C也是基于[:]作为一行语句结束的标志,也没有必要使用[:]作为一 ...
最新文章
- Snowball 关系提取,2篇知乎博客
- 中国移动手机网络私有网络连接问题解决办法
- Acwing第 23 场周赛【完结】
- php简单实例,php实现推荐功能的简单实例
- 【电脑使用经验】怎么查看无线网络中电脑的IP地址?
- git commit查找提交的关键字
- Makefile之自动生成依赖(8)
- Centos7内核版安装nginx环境问题及解决方法
- AI队列长度检测:R-CNN用于使用Keras进行自定义对象检测
- PAT乙级 1005 继续(3n+1)猜想 (25分)
- 数据库连接池配置和优化
- KEYCODE_DPAD_CENTER 和 KEYCODE_ENTER
- HTML5+Activex+Singr+ABP+MongoDB
- 关于深度学习caffe for Windows编译入门
- 中望cad文字显示问号怎么办_如果CAD工程图显示乱码怎么办?
- MFC:Ribbon界面设计
- CTPN在windows的CPU上运行经验
- 京瓷打印机m5521cdn_京瓷Kyocera ECOSYS M5521cdn 驱动
- 如何下载B站高清视频
- 微信浏览器无法下载APK文件的解决方案