zoukankan      html  css  js  c++  java
  • 关于const 和指针

    这个很久之前就很困扰的问题,现在再理一下:

    1,指向const对象的指针

    》C++强制要求指向const对象的指针也必须具有const特性!!!也就是不能把一个const对象的地址赋给一个非const对象的指针!

    》而该指针的const特性限定了该指针所指向的对象的类型,而并非该指针本身。

    eg. const int i = 0;

         const int *p = &i;    //OK

         int *p = &i;           //error

    》不能用void *指针保存const对象的地址,而必须用const void *类型的指针保存const对象的地址

    》允许把非const对象的地址赋给指向const对象的指针,并不能通过该指针改变其值(但是可以通过其他方式改变)

    2,const指针

    》其本身的值不能修改!即初始化后就不能指向其他的地址!!

    》与任何const量一样,在定义const指针时必须进行初始化!但是指向const对象的指针不必

    eg. int i = 0;

         int *const P = &i;    //不能指向const int类型的对象!

    3,指向const对象的const指针

    》既不能修改初始化后的指针指向的地址,也不能修改指向对象的值!(必须在定义的时候初始化)

    eg. const int i = 0;             //所指向的对象必须是const类型,而不能是非const

         const int *const p = &i;

    4,指针和typedef

    》typedef中使用指针就不能单纯的当做文本扩展

    eg. typedef string *ps;

         const ps cstr;

    可等价于

         string *const cstr;

    并且和

         ps const cstr;

    也是等价的,都可指向string类型的对象。

          

  • 相关阅读:
    javascript:history.go()和History.back()的区别
    Web 开发] 定制IE下载对话框的按钮(打开/保存)(转)
    JavaScript 浮动定位提示效果(转)
    关于网页*静态化*及SEO问题的一些补充(转)
    httpanalyzer 结合 HttpWebRequest Post的运用
    SEO工具大全(转)
    导出excel
    Asp.NET导出Excel文件乱码解决若干方法 (转)
    关于DataBinder.Eval Eval Bind
    电脑疑似中毒
  • 原文地址:https://www.cnblogs.com/day-dayup/p/3575198.html
Copyright © 2011-2022 走看看