[C++] const标识符

[C++] const标识符


const 简单来说是一个常量的标识符,如果需要一个具有确定且不变的常量时可以使用,一经定义后面不再改变,所以必须初始化。
例如,定义缓冲区大小:

const int bufferSize = 512;
double a = 3.14;

const和引用
1.常量的引用
2.引用常量

// 常量的引用
int &ri = bufferSize; //错误,不可以用一般引用去绑定一个常量,因为不可以修改,而一般引用时允许修改的
const int &ri = bufferSize; // 正确,引用常量和常量绑定,符合规范
// 引用常量
const int &r2 = a; // 正确,不允许使用r2来修改a的值
// 不难看出,上面等式打破了引用类型必须与其所引用对象的类型一致
// 上述实际执行的是:
int temp = a;
const int &r2 = temp;
// temp称为临时量对象,一般创建引用绑定对象目的就是要使用引用来改变值。 如果不是用引用常量绑定则错误。

const和指针
1.指向常量的指针
2.指针常量

// 指向常量的指针  仅仅要求不能通过该指针改变对象的值
int *ri = &bufferSize; // 错误,ri是普通指针
const int *ri = &bufferSize; //正确,ri指向 bufferSize 常量的地址不可以使用ri去修改bufferSize的值
const int *r2 = &a; //正确,但是不可以使用r2来修改a的值,a不是常量即允许一个指向常量的指针指向一个非常量对象
// 不难看出,上面的等式打破了 指针类型必须与所指对象的类型一致

// 指针常量,能否修改完全取决于所指对象是否为常量
double *const r3 = &a;//r3是一个指向一般的非常量整数,可以用r3来修改a的值 *r3 = 3;
const int *const ri = &bufferSize; // ri 是一个指向常量对象的常量指针,如何都不可以修改bufferSize的值

const阶级
1.顶层
2.底层

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验一 词法分析程序设计 [实验目的]: 了解词法分析的主要任务。 熟悉编译程序的编制。 [实验内容]:根据某文法,构造一基本词法分析程序。找出该语言关键字标识符、整数以及其他一些特殊符号,给出单词的种类和值。 [实验要求]: 构造一个小语言的文法,例如,Pascal语言子集的文法:    G[<程序>]:    <程序>→<程序首部>;<分程序>.    <程序首部>→program<标识符>    <分程序>→<常量说明部分> <变量说明部分> <复合语句>    <常量说明部分>→CONST <常量定义表>    <常量定义表>→<常量定义><常量定义表> |<常量定义>    <常量定义>→<标识符>=<无符号整数>;    <变量说明部分>→VAR <变量定义表>    <变量定义表>→<变量定义><变量定义表>|<变量定义>    <变量定义>→<标识符表>:<类型>;    <标识符表>→<标识符>,<标识符表>|<标识符>    <类型>→integer|real|boolean|char    <分程序>→<复合语句>    <复合语句>→begin<语句序列>end    <语句序列>→<语句>|<语句序列>;<语句>    <语句>→<赋值语句>|<复合语句>|<条件语句>    <赋值语句>→<标识符>:=<表达式>    <条件语句>→if <布尔表达式> then <语句> else <语句>    <表达式>→<表达式>+<项>|<表达式>-<项>|<项>    <项>→<项>*<因式>|<项>/<因式>|<因式>    <因式>→<标识符>|<无符号整数>|(<表达式>)    <布尔表达式>→<表达式><关系运算符><表达式>    <关系运算符>→ =|<|<=|>|>=|<>    <标识符>→<字母>|<标识符><字母>|<标识符><数字>    <无符号整数>→<数字>|<无符号整数><数字>    <字母>→a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z    <数字>→0|1|2|3|4|5|6|7|8|9

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值