zoukankan      html  css  js  c++  java
  • const

    pointer to const:指向常量的指针(被指向的对象是常量)

    const pointer:常量指针(指针本身是常量)

     

         [对被指向对象的修饰] * [指针本身的修饰]

    ====================================================

    指向常量的指针:被指向的对象是常量,修饰的是被指向的对象。

    不能用于修改其所指对象的值(被指向的对象是常量)。

    const int s32val = 5;//常量
    
    const int *pint = &s32val;//const在*前,那么说明被指向的对象是const int型。*pint是不能改变。(pint是可以改变的,但是改变没有意义。)
    

     s32val是常量,pint是指向常量的指针。

    例外:允许一个指向常量的指针  指向  一个非常量对象。

    指向常量的指针也没有规定其所指的对象必须是一个常量。只是规定不能通过该指针改变指向对象的值。

    ------------------------------------------------------------

    常量指针:指针本身是常量,指针不能改变。和常量定义意义,必须初始化

    int x = 10;
    
    int *const pint = &x;//const在*后面,修饰pint,所以pint是常量,不能改变,但是*pint是可以改变的。
    

     可以*pint = 12;这样的方式去修改,但是不能pint++,这类操作。

    ------------------------------------------------------------

    指向常量的常量指针

    const int *const pint = &x;
    

    ==========

    top-level const:指针本身是常量(*右边)

    low-level const:指向的对象是常量(左边*)

    记忆方法,尊右为顶。

    ==========

    c++11的新规定:

    constexpr类型。

    常量表达式:不会改变并且在编译过程就得到计算结果的表达式。

    const int max=30;

    const int mmax = max+1;

    是常量表达式。

    int unstat = 11;

    int getval = val();

    不是常量表达式,unstat是普通int类型,val()不是在编译阶段就能确定的值。

    用constexpr验证:

    constexpr int mf = 20;

    constexpr int limit = mf+1;

    constexpr int sz = getval();只有getval是一个constexpr函数,才是正确声明。

  • 相关阅读:
    待写
    让一个小div在另一个大div里面 垂直居中的四种方法
    20 个有用的 SVG 工具,提供更好的图像处理
    php原理简述
    Apache 打开网页的时候等待时间过长的解决方案
    TCP协议中的三次握手和四次挥手(图解)
    apache 各平台进程线程模块解析
    浅谈移动Web开发(上):深入概念
    响应式布局
    jQuery Mobile 入门教程
  • 原文地址:https://www.cnblogs.com/jsgnadsj/p/5094009.html
Copyright © 2011-2022 走看看