• 1、什么是const?

    const就是constant的缩写,意思是“恒定不变的”,它是定义只读变量的关键字,或者说const是定义常变量的关键字,常类型的变量或对象的值是不能被更新的

  • 2、为什么引入const?

    const推出的初始目的,就是为了取代预编译指令,消除它的缺点,同时继承它的优点

  • 3、const有什么主要的作用?

    (1)可以定义const常量,具有不可变性。例如:const int MAX = 100; int array[MAX];

    (2)便于进行类型检查,使编译器对处理内容有更多了解,以消除一些隐患

        例如:void f(const int i) {......}编译器就会知道 i 是一个常量,不允许修改。

    (3)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。还是上面例子,如果在函数体内修改了 i ,编译器就会报错

        例如:void f(const int i){ i = 1001;} error!

    (4)为函数重载提供了一个参考

class A
{
  void f(int i) { ...... }  //一个函数
  void f(int i) const { ...... }  //上一个函数的重载.....
};

    (5)提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

  • 4、const的使用

  const在实际中用得并不多,先列出如下const短小总结,const关键字修饰指针,const在*号的左边还是右边(左定值,右定向)

1.const int a;      //a是一个常整形数
2.int const a;      //a是一个常整形数
3.const int *a;      //a是一个指向常整数型的指针(整形数是不可修改的,但指针可以)
4.int const *a;      //a是一个指向常整数型的指针(同上)
5.int *const a;      //a是一个指向整形数的常指针(指针保存内容不可修改)
6.int const * const a;  //a是一个指向常整形数的常指针(指针指向的整形数是不可修改的,同时指针也是不可修改的)

  (1)int const * ;

    int const *a 和 const int *a意义一样。

    从右往左看,进行解析,这个a是一个指针,而且是一个常量,类型是整形,称为指针常量

    特点:*a指向一个整形的常量,但是不能通过修改p所指向内存单元的值,只能通过修改其所指向的对象,可称为指向常整形的指针

int data = 88;
const int number = 99;
const int *p1 = &number; p1 = &data; //允许通过编译,允许修改所指向的对象
*p1 = 10086;   //不允许通过编译,无法通过指针修改内容

  (2)int * const  a;

    从右往左看,一个常量a被定义为整形指针。可称为指向整形的常指针

    特点:常量a是一个整型类型的指针,它能通过指针来进行修改其中的内容,但当它已经指向一个地址之后,便不能再指向其他地址,和int const*有区别

int data = 88;
int k = 99;
int * const p2 = &data; *p2 = 10010;  //允许通过编译,允许通过指针修改内容;
p2 = &k;     //不允许通过编译,无法修改所指向的对象;

  (3)const int * const p;

    从右往左看,结合上面两个,可以看做常量指针常量,即常量p是一个整形的指针,而且这个指针还是个常量

int data = 88;
int k = 99;
int const * const p3 = &data; p3 = &k;    //不允许通过编译
*p3 = 4399;  //不允许通过编译

const修饰符总结的更多相关文章

  1. C++中 容易忽视的const 修饰符

    C++可以用const定义常量,也可以用#define定义常量,但是前者比后者有更多的有点: (1)const常量有数据类型,而宏常量没有数据类型.编译器可以对const进行类型安全检查,而后者只进行 ...

  2. [Reprint]C++函数前和函数后加const修饰符区别

    c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostr ...

  3. C++函数前和函数后加const修饰符区别

    class Test(){ public: Test(){} const int foo(int a); const int foo(int a) const; }; 一.概念 当const在函数名前 ...

  4. [C++]const修饰符

    Date: 2014-1-1 Summary: const 修饰符笔记 Contents: 1.const 修饰符 声明一个常量数据类型 , 在编译时就确定数据类型 2.const 与 指针 一般情况 ...

  5. C/C++ 中 const 修饰符用法总结

    C/C++ 中 const 修饰符用法总结 在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家 ...

  6. const修饰符与函数

    一.用const修饰函数的参数 函数参数类型前加const指明该参数为常量,在函数内部不可改变. void func(const int x) { //x不可以在内部进行赋值等操作. } 注:当参数为 ...

  7. const修饰符限定的常量

    类型前加const修饰符限定变量为只读,称为常量,定义时必须初始化,且初始化后编译器不允许再修改常量的值. 一.常量的定义 const在类型前面 const int value: //value是co ...

  8. [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结

    在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...

  9. 转载----C/C++ 中 const 修饰符用法总结

    感谢原创作者,写的好详细.不忍错过,所以转载过来了... 原文地址: https://www.cnblogs.com/icemoon1987/p/3320326.html 在这篇文章中,我总结了一些C ...

  10. C++ c++与C语言的区别(三目运算符,const修饰符)

    //区别⑦:三目运算符(C++版本) #include<iostream> using namespace std; //三目运算符 C语言返回变量的值 C++语言是返回变量本身 void ...

随机推荐

  1. 14.Nginx搭建及优化

    Nginx搭建及优化 目录 Nginx搭建及优化 Nginx服务基础 概述 Nginx和Apache的优缺点比较 编译安装Nginx服务 添加Nginx系统服务 Nginx服务配置文件 nginx服务 ...

  2. 第五章、Linux网络服务之yum仓库

    目录 一.yum仓库简介 二.yum配置文件 1yum主配置文件 2日志文件 三.yum命令详解 1查询软件包命令 2查询软件包组命令 3yum安装升级 4 软件卸载 四.搭建yum仓库 本地仓库 h ...

  3. 一篇文章讲清楚MySQL的聚簇/联合/覆盖索引、回表、索引下推

    迎面走来了你的面试官,身穿格子衫,挺着啤酒肚,发际线严重后移的中年男子. 手拿泡着枸杞的保温杯,胳膊夹着MacBook,MacBook上还贴着公司标语:"加班使我快乐". 面试官: ...

  4. 【万字长文】从零配置一个vue组件库

    简介 本文会从零开始配置一个monorepo类型的组件库,包括规范化配置.打包配置.组件库文档配置及开发一些提升效率的脚本等,monorepo 不熟悉的话这里一句话介绍一下,就是在一个git仓库里包含 ...

  5. 10.2 如何运行Android项目到Android Studio自带模拟器

    Android开发一般都可以将应用运行到模拟器查看效果,除非特殊项目要用到真机,所以我们这里先讲解如何将项目运行到模拟器,以校验我们的开发环境以及创建的项目是否有问题. 创建模拟器 点击"C ...

  6. 记一次重复造轮子(Obsidian 插件设置说明汉化)

    杂谈 #Java脚本 因本人英语不好在使用Obsidian时,一些插件的设置英文多令人头痛.故有写一个的翻译插件介绍和设置脚本的想法.看到有些前人写的一下翻译方法,简直惨目忍睹.竟然要手动.这个应该写 ...

  7. 如何准备论文线上Presentation视频录制教程(Summary of Video Recording)

    0:前言 由于国外的疫情严重,目前大多数学术会议都是线上举办,因此往往需要制作presentation的视频录制.由于各种软件横飞,有的需要会员并且不熟悉操作,特别浪费时间.因此,我将这次的操作和遇到 ...

  8. Golang仿云盘项目-2.2 保留文件元信息

    本文来自博客园,作者:Jayvee,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/16459817.html 目录结构 E:\goproj\FileStorage ...

  9. java自定义注解实现执行所有要测试的接口

    /* * 注解类 * */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Demo ...

  10. 【PostgreSQL 】PostgreSQL 15对distinct的优化

    示例表 table t_ex; c1 | c2 ----+---- 2 | B 4 | C 6 | A 2 | C 4 | B 6 | B 2 | A 4 | B 6 | C 2 | C 以下SQL语 ...