const 关键字

const关键字精确的说代表只读(readonly),其值在编译时不能被使用,因为编译器在编译时不知道其存储的内容。const关键字的目的是为了取代预编译指令,消除它的缺点,同时继承它的优点。

1. const修饰的只读变量

定义const只读变量,具有不可变性。

const修饰的只读变量必须在定义的同时初始化,否则后期进行赋值将出现错误。这也体现了const的只读属性。


2.避免不必要的内存分配,提高效率

  编译器通常不为普通的const只读变量分配存储空间,而是将他们保存在符号表中,这使得它成为一个编译期间的值,没有了存储与读内存的操作,使得它的效率也很高。

const与define的一些区别:


2.1在内存中的区别

           const定义的只读变量给出对应的内存地址

          define给出的是立即数

2.2 使用过程中的区别

         const定义的只读变量在程序运行过程中只有一份拷贝(全局只读变量,存放在静态区)

         define定义的宏常量在内存中有若干个拷贝

2.3 编译期间的区别

         const修饰的只读变量在编译的时候确定其值

         define宏定义在预编译阶段进行替换

2.4 修饰的数据的区别

      const修饰的只读变量具有特定的类型

       define宏没有类型


3.const修饰一般变量

    const修饰简单类型的只读变量,这种只读变量在定义时,修饰符和类型说明符可以互换

   int const i = 1; 或者const int i = 1;


4.修饰数组

   数组与一般变量相同


5.修饰指针(最先修饰谁,谁就是不可变)

    const int * p; //p可变,p指向的对象不可变(p可变,*p不可变,因此可以改变p的指向来修改*p)

     int const *p;  //p可变,p指向的对象不可变(p可变,*p不可变,因此可以改变p的指向来修改*p)

     int * const p; //p不可变,p 指向的对象可变(p不可变,*p可变)

     const int * const p;//指针p和p所指向的对象都不可变


6.修饰函数参数

    const修饰符修饰函数参数,当不希望这个参数值被函数体内以外改变时使用

    

7.修饰函数的返回值

  const修饰符也可以修饰函数的返回值,返回值不可改变

        



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值