const关键字用来作甚?const是一个类型修饰符。常见的类型修饰符有哪些?

short long unsigned signed static autoextern register

定义一个变量。

(1)类型描述符中如果有多个关键字,他们出现的位置不影响对变量的限制。

short int i;

int short i;

const int a;

int const a;//上面两个是一样的。

(2)

const int *a;

int* const a;

int const* const a;

对指针类型变量的理解。

(a)[] () *在数据定义时与在表达式中优先级一样,例如:

int*a[10];//因为[]的优先级高于*。因此是一个数据,每个成员类型为指针,指向int

int (*a)[10]//因为()优先级高于[],因此,先看里面是一个指针,指向类型为数组

指针的判断是从右至左,

(b)

const int *a;//a是变量名,*表示他是一个指针,指向的类型已经确定,

      //他是指向一个const int的类型,并且数据不可修改。

int *const a; //*const 一起来修饰a,即a只读,*表示a是一个指针,

//因此,这是一个只读的指针,指向的类型为int型的变量。数据可以修改

int const* const a;//*表示指针,因此指针不可修改,int const是指针指向的类型,仍然是const。

          //因此,都不可以修改

栗子:自己验证

#include<stdio.h>

int main()

{

  char static data_var='c';

  char const data_const='b';

   char *const p1=&data_var;

  //p1=&data_var;

  const char *p2=&data_const;

  //*p2='f';

  return 0;

}

(3)

typedef void* VP;

const void *ptr//存储位置;

const VP ptr //存储位置;

首先要理解typedef 是定义一种数据类型。一定要与define区分开来。

typedef void* VP;//VP是类型的名字,余下的是这个类型的真实类型

const VP ptr;是不是替换为const void *ptr;?void*是以这个整体。

const int i;==int const i;

VP const ptr;即 void* const ptr;

const 作用:

向其他程序员传递一个信息。这个不要修改。

有可能让编译器产生更精简紧凑代码,减少bug

合理的保护我们只读的数据,避免不必要的错误

使用位置:

定义常量。防止被修改

函数的参数中,如果不希望子函数去修改被调用函数的某个数据,加以限制

在C++中,类的成员函数的使用。

const的全面理解的更多相关文章

  1. 对 const char* const &a 的理解

    定义中用到&是独立引用. 比如: char i; char &a=i; 表示a是i的一个单独引用. 当有i='a'时,也有a='a'; 当有a='c'时,也有i='c'; 两个变量的标 ...

  2. const char * 组合理解

    1 . const char *ptr 从char *ptr 可以理解为指向字符常量的指针,ptr是一个指向char *的常量,*ptr的值为const,不能修改. 2. char const *pt ...

  3. c++中的const关键字的理解

    看effective c++第二版推荐使用const,少用define.今天才发现发现这远远不够. #define定义的常量在预处理替换,debug的时候无法打印宏的,这种常量设置是有缺陷的, con ...

  4. C++ const的自我理解

    C++学习笔记–const const 是 constant 的缩写,本意是不变的,不易改变的意思.在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数. C++ const ...

  5. 我所理解的readonly和const

    最近要给学校软件小组新成员讲几次课,所以把很多以前懒得学习的和模糊不清的知识点,重新学习了一下. MSDN是这样解释的: readonly 关键字与 const 关键字不同. const 字段只能在该 ...

  6. C++ const 理解

    转载自:https://www.cnblogs.com/jiabei521/p/3335676.html 如果函数需要传入一个指针,面试官可能会问是否需要为该指针加上const,把const加在指针不 ...

  7. 深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p

    由于没有const*运算,const实际上修饰的是前面的char*,但不能在定义时转换写成 const(char *)*p,因为在定义是"()"是表示函数. 三.深入理解7种组合 ...

  8. 复制构造函数2——深入理解

    //如果不显示定义复制构造函数,编译会出错,原因是:在创建对象s2时,调用默认复制构造函数并用对象s1对其进行初始化,致使s2中指针 //与s1中指针指向同一储存空间,当一个对象生命周期结束后调用析构 ...

  9. const关键字与指针

    const与指针在一起的几种情况. const int *p1; //表示p1本身不是const,指向的变量是const. const *int p2; //语法错误 int const *p3; / ...

随机推荐

  1. XMPP 常见错误:(<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-autho

    1检查jid XMPP认证的问题,一般都是与JID有关的,因此解决这类问题,首选的入口就是分析一下XMPPStream的JID,客户端在与服务器连接后,Socket就绑定了这个端口,用来处理与服务器的 ...

  2. 2016年GitHub排名前20的Python机器学习开源项目(转)

    当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们 ...

  3. 串行通讯之.NET SerialPort

    第1章串行通讯之.NET SerialPort    2 1 枚举串口    2 2 打开/关闭串口    2 3 写数据    3 3.1 写二进制数据    3 3.2 写文本数据    4 4 ...

  4. Eclipse中Ant的配置与测试 转

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  5. XPath语法 在C#中使用XPath示例 【转http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html】非常详细的文章

    XPath语法 在C#中使用XPath示例   XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml ve ...

  6. arcgis API for javascript 学习笔记

    ArcGis Server地图是缓存的,意味着它有服务器管理员简历提示性能的一组预先渲染的切片.由于这个原因地图通过ArcGISTiledMapServiceLayer表示 如果地图服务没有一个可用的 ...

  7. iOS开发之——从零开始完成页面切换形变动画

    前言 某天我接到了UI发给我的两张图: 需求图.png 看到图的时候我一脸懵逼,显然我需要做一个页面切换的指示动画.老实说,从大三暑假开始做iOS开发也一年有余了,但是遇到复杂动画总是唯恐避之不及,只 ...

  8. Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  9. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  10. spring关于urlpattern

    视图解析器(ViewResolver)注册中央调度器定制处理器jsp页面搭建springmvc.xml配置效果图第一个案例提升----视图解析器关于urlpattern说法最好配成*.do 不能配成/ ...