• [001]const和指针


    很经典的:

    const int* p;
    
    int* const p;

    前者表示指针指向的值是const,指向的值不可变,但是指针本身是可变的;后者表示改指针是const,指针不可变,但是指向的值是可变的。

    写个代码就是:

    const int* p = &a;
    *p = 123;                // Error
    p = &b;                    //OK
    
    int* const p = &a;
    *p = 123;                // OK
    p = &b;                    // Error

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

    看了上面都会觉得const和指针的关系了解的差不多了,但是,其实并不是这样的。

    如果有以下的定义,那么s是什么类型呢?

    typedef string *pString;
    const pString s;

    很多人都会回答成:const pString是一种指针,指向string类型的const对象,其实错了。

    声明const pString的时候,const修饰的是pString类型,这是一个指针,因此,该声明语句是把s定义为指向string类型对象的const指针,即

    string* const s;

     那么我们再变态一点,弄个下面的定义呢?

    pString const s1;

    这个时候的s1是什么呢?

    其实这个时候,完全可以把pString看成是一个类型,就像是下面的代码,根本没有什么区别!

    const int a;
    int const a;

    所以,s1的类型和s是一样的。

  • 相关阅读:
    JQuery DOM操作
    JQuery 选择器和事件
    LinQ 组合查分页
    LinQ
    web 图片验证码 验证
    Web 上传图片加水印
    Web 组合查询加 分页
    ajax连接数据库加载+三级联动
    jq动画
    jq基础
  • 原文地址:https://www.cnblogs.com/hustcser/p/3620909.html
Copyright © 2020-2023  润新知