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函数,才是正确声明。

  • 相关阅读:
    Linux安全应用之防垃圾邮件服务器的构建
    Postfix邮件系统安装配置视频
    Linux常用的安全工具
    Linux系统安全加固(一)
    全球开源软件发展趋势分析
    安装配置FreeBSD9全过程体验
    P1441-砝码称重
    POJ-2376 Cleaning Shifts
    P1514-引水入城
    P1378-油滴扩展
  • 原文地址:https://www.cnblogs.com/jsgnadsj/p/5094009.html
Copyright © 2011-2022 走看看