zoukankan      html  css  js  c++  java
  • 第3课.进化后的const

    1.c语言中

    const修饰的变量是只读的,本质上还是变量
    const修饰的局部变量在栈上分配空间(因为在栈上分配空间,所以我们可以通过改变这个空间的值。间接去改变这个变量。)
    const修饰的全局变量在只读存储区分配变量(这个区不能改)
    const在编译期有用,在运行期无用(const修饰的变量只在编译期有只读属性,过了编译期的运行期就无效了)
    const修饰的变量不是真的变量,它只是告诉编译器该变量不能出现在赋值号的左边。

    思考:c语言中怎么定义真正的常量?
               只有enum(注:define不能,它是宏定义不是常量定义,下面会讲到)
    

    eg:const变量被修改

    2.c++中

    const的声明是在符号表中放入常量,编译过程中发现使用该常量是则直接以符号表中的值替换,编译过程中若发现以下情况则给对应的常量分配存储空间。(这里分配空间只是为了更好的兼容c语言,实际上并没有什么用)
    a.对const常量使用了extern
    b.对const常量使用了&
    :c++编译器虽然可能为const常量分配空间,但不会使用其存储空间的值。

    3.c++中const常量与宏定义的区别

    const常量是由编译器处理,编译器对const常量进行类型检查和作用域检查
    宏定义有预处理处理,单纯的文本替换
    :const定义的变量不能使用在数组,case之类的地方(因为const不是常量)

  • 相关阅读:
    图算法之广度优先遍历
    图形算法之深度优先遍历
    list下SORT排序方法使用
    Linux使用curl进行接口测试
    Template方法应用
    profile[计算方法耗时模块]用法
    性能测试的实施及总结(二)
    yum源配置
    Dockerfile文件
    Docker的Image与Container
  • 原文地址:https://www.cnblogs.com/huangdengtao/p/11751256.html
Copyright © 2011-2022 走看看