const与const指针

一.C/C++中的const

     C中的const是"一个不能被改变的普通变量",在C中,它总是占内存的,而且它的名字是全局符,默认是外部连接.C编译器不能把const看成一个编译期的常量.在C中:

      const bufsize =100;

       char buf[bufsize];

 是错误的.

      C++中的const默认是内部连接,也就是说,const仅在const被定义过的文件里才是可见的,而在连接时不能被其他编译单元看到.当定义一个const时,必须赋一个初值给它,除非用extern作了清楚的说明:

 extern const bufsize;

    C++编译器通常不会为const分配存储空间,它把这个定义保存在符号表里。

二 const指针

 当使用带有指针的const时,有两种选择:或者const修饰指针正指向的对象,或者const修饰存储在指针本身的地址里.

 (1)指向const的指针

      const int * x;

     " x是一个指针,它指向一个const int",这里不需要初始化,因为说x可以指向任何东西,但是它所指的东西是不可以改变的.

 (2)const指针

    int  d=1; 

     int * const x=&d;

    "x是一个指针,这个指针是指向int 的const指针".因为现在指针本身是const指针,编译器要求给它一个初始化值,这个值在指针寿命期间不变.然而要改变它所指向的值是可以的,可以写 *x=2;

三 const指针赋值

 int d =1;

    const int e=2;

    int *u=&d;  // ok--- d not const

    int *v= &e; //illegal ---- e const

    int *w =(int*)&e;  //legal but bad practice

四 类中的const

  类中的const必须在构造函数的初始化列表里面初始化或者将其设置为static

  class A{

           A() { const int size=3;}

          };

      或者:

       class A {

             static const int size=3;

      };

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值