美文网首页
const关键字

const关键字

作者: Noza_ea8f | 来源:发表于2021-11-04 09:24 被阅读0次

    const 在实际编程中用得并不多,const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。
    说 const 定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以叫常变量。用 const 定义常变量的方法很简单,就在通常定义变量时前面加 const 即可,如:

    const  int  a = 10;
    

    const 和变量类型 int 可以互换位置,二者是等价的,即上条语句等价于:

    int  const  a = 10;
    

    我从没有这么较过真,要不是上课需要我是不会去追究这些细节的;
    往往是在遇到实际问题时才会去寻找答案;

    那么用 const 修饰后和未修饰前有什么区别呢?它们不都等于 10 吗?

    用 const 定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量。这也就意味着必须在定义的时候就给它赋初值。
    其实就是这么个意思,变量可以在程序运行过程值中发生改变,而const 在程序运行过程中是不能再被赋值了;

    const VS define

    很多人在学习 const 的时候都会混淆它与 define 的区别。从功能上说它们确实很像,但它们又有明显的不同:
    define是预编译指令,而const是普通变量的定义。define定义的宏是在预处理阶段展开的,而const定义的只读变量是在编译运行阶段使用的。
    const定义的是变量,而define定义的是常量。define定义的宏在编译后就不存在了,它不占用内存,因为它不是变量,系统只会给变量分配内存。但const定义的常变量本质上仍然是一个变量,具有变量的基本属性,有类型、占用存储单元。可以说,常变量是有名字的不变量,而常量是没有名字的。有名字就便于在程序中被引用,所以从使用的角度看,除了不能作为数组的长度,用const定义的常变量具有宏的优点,而且使用更方便。所以编程时在使用const和define都可以的情况下尽量使用常变量来取代宏。
    const定义的是变量,而宏定义的是常量,所以const定义的对象有数据类型,而宏定义的对象没有数据类型。所以编译器可以对前者进行类型安全检查,而对后者只是机械地进行字符替换,没有类型安全检查。这样就很容易出问题,即“边际问题”或者说是“括号问题”。

    相关文章

      网友评论

          本文标题:const关键字

          本文链接:https://www.haomeiwen.com/subject/ktlczltx.html