文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>指针与const限定符

指针与const限定符

时间:2010-11-06  来源:liurhyme

    前些日子再看《c++与面向对象》那本书的时候,遇到了const这个限定符,书中举了许多“const”位置不同的例子看得我头晕,例如,int * const p  、 int const * p 、const int *p 。今天我誊出了一个下午的时间对指针与const限定符做了一个全面的总结。应该还会又不完善的地方,以后回继续补充修改。
    当用const限定指针时,需要注意常用的以下五类:

    一),指向非常量的非常量指针(不使用const)
     例如,int val1,val2;
          int *p;
          val1 = 10;
          val2 = 20;
          p = &val1;
          p = &val2;
          *p += 10;

    二),指向常量数据的非常量指针
         const int * p
         p是指向常整数的指针,即p指向的整数是不能通过p来修改的,即不能通过*p来修改该整数,但这并不意味着该整数是不可修改的,实际上可以通过其他途径来修改。
    例如,int  i,j;
         const int *p;     //p是一个指向常量数据的指针,是变量,所以修改p本身是允许的,但*p=5是错误的。
         p = &j;  //允许
         p = &i;   //允许
         i = 10;  //允许
         *p = 5;  //不允许

    三),指向非常量数据的常量指针
         int * const p;

         如果想声明一个不可修改的指针变量,保证该指针总是指向固定的内存地址,则需要定义常量指针。
         int var;
         int * const p = &var;
         //声明p的同时对p进行初始化,通过这个声明,p定义为一个指向整数的常量指针。这意味着p指向的整数通过p是可修改的,但是本身的值在初始化后,就不能杂修改了,也就是说,p只能永远指向变量var,另外,由于声明了p是指向整型变量的,也不能将const修饰的整型变量的地址赋给p

         例如,const int var;
              int * const p = &var;     //错误  var是一个常量

    四),指向常量数据的常量指针
        用const同时限定指针和指针指向的数据
        const int val = 10;
        const int * const p = &val;
        val是一个常整型变量,初始化后不可在修改;p是一个指向长整数的常量指针,p本身在初始化指向val后也不能被修改,同时也不能通过p修改它所指向的变量。

    五),const用于传递函数参数
        传值:不会破坏实参,但传递参数时要复制数据,如果参数存储空间较大在时间与空间上效率低。
        传引用:传递的数据量小,在时间与空间上效率较高,但被调用函数可以操作实参,可能带来完全的隐患
         
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载