//#############################################################
// const
// - 编译时的限制:一个对象不能被修改
// int i = 1; const int *p1 = &i; // 数据不能被修改,指针可以被修改 int* const p2 = &i; // 指针不能被修改, 数据可以 const int* const p3; // 指针和数据都不能被修改 // 容易搞错的一种情况
int const *p4 = &i; // 数据不能被修改,指针可以被修改 // 总结
// 如果const在*的【左边】, 那么【数据】为const
// 如果const在*的【右边】, 那么【指针】为const /*
为什么要使用const
a.) 防止对数据的意外修改
b.) 使程序具有更好的可读性,知道这些数据是常量
c.) 使编译器能够做更多的优化,使代码更紧凑
d.) const往往意味着变量放在ROM上,在嵌入式编程中很有用
*/

C++进阶--const变量的更多相关文章

  1. 为什么为 const 变量重新赋值不是个静态错误

    const 和 let 的唯一区别就是用 const 声明的变量不能被重新赋值(只读变量),比如像下面这样就会报错: const foo = 1 foo = 2 // TypeError: Assig ...

  2. const变量初始化问题

    在C++中const变量定义时必须进行初始化,否则无法通过编译. 初始化的方式有多种,可以通过字面值对其进行初始化,也可以通过变量对其初始化,或其他方式,只要能给const变量赋初值即可(当然初值应该 ...

  3. const变量赋值报错分析

    const变量赋值报错分析 const变量赋值报错 从变量到常量的赋值是合法C++的语法约定的, 如从char 到const char顺畅: 但从char **到 const char **编译器就会 ...

  4. 转:const“变量”、define的常量和static 变量

    首先讲C编译器的内存分配: 代码区 数据区 用户区=线程栈+堆 其中的数据区存储:常量(define)+静态变量(static)+符号集(const)+全局变量   然后讲一下编译的大致顺序: 注释- ...

  5. C++中如何修改const变量

      一.结论 声明:不同于C语言的const变量修改问题(可以通过指针间接修改const变量的值),这里只讨论C++ 里的const. C++ const 修饰符,表示常量,即如果以后保证不会修改则声 ...

  6. const变量的存储区及修改权限

    转自const变量的存储区及修改权限 [cpp] view plaincopy const int a = 1; int *p = const_cast<int*>(&a); *p ...

  7. const变量与define定义常量的区别

    一.概念性区别 const 变量就是在普通变量前边加上一个关键字const,它赋值的唯一机会就是“定义时”,此变量不能被程序修改,存储在rodata区. define定义的是常量,不是变量,所以编译器 ...

  8. c++变量声明、定义,const变量

    变量声明和定义的主要区别: 声明不分配存储空间,定义分配存储空间. 变量可以声明多次,但只能定义一次(一个变量只能在一个源文件中定义) 声明通常放在头文件(.h)中,定义放在源文件(.cpp)中 变量 ...

  9. const变量指针赋值给非const类型的指针运行结果

    在c++可以定义一个const变量,然后把变量的值赋给一个非const指针,可以通过指针来改变const变量的值吗?下面的截图给出了答案

随机推荐

  1. 栈(stack),C++模板实现

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  2. mongo长连接

    php mongoclient默认都是长连接 mongo close方法可以关闭长连接 redis,mysql 短连接和长连接可选 他们的close方法都不可以关闭长连接

  3. C++中的数据存储方式自动存储、静态存储和动态存储

    C++中变量存储方式有三种,自动存储,静态存储,动态存储 自动存储简单意义上就是在函数内不用任何关键字直接定义的变量,它在函数被调用时被创建,在函数退出时自动消失, 静态存储顾名思义就是在程序的整个运 ...

  4. 玩转X-CTR100 l STM32F4 l SD卡FatFs文件系统

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器具有SD卡接口,本教程使用免费 ...

  5. 建立自己的Servlet--成功

    1--用记事本新建一个servlet程序,文件名为HelloWorld.java,文件内容如下: import java.io.*; import javax.servlet.*; import ja ...

  6. SWIFT显示底部的工具条

    有以下页面显示我的讯息,用户可以点击右上角的编辑按钮进入删除状态.点击编辑按钮后,按钮文字改为“取消”,左上角的按钮变为“全选”,同时显示底部工具条带有“删除”按钮 实现起来挺简单的,在正常状态下点击 ...

  7. 51Nod 1066:Bash游戏 (巴什博弈)

    1066 Bash游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次最少拿1颗,最多拿K颗,拿到 ...

  8. WinForm 实现点击一个按钮,执行另一个按钮事件

    C# 代码如下: private void button1_Click(object sender, EventArgs e) { this.button1.Click += new System.E ...

  9. 【多线程学习笔记整理】002_线程的停止、暂停、与yield

    一.停止线程的三种方式 停止线程是多线程中的一个很重要的点,停止线程意味着在线程处理完当前任务之前终止正在做的操作,但是如果不能正确的操作,可能会发生不可预期的结果. 1)使用退出标志,使线程正常退出 ...

  10. UVA1252 【Twenty Questions】

    分析 为了叙述方便,设"心里想的物体"为W.首先在读入时把每个物体转化为一个二进制整数.不难发现,同一个特征不需要问两遍,所以可以用一个集合s表示已经询问的特征集. 在这个集合s中 ...