• 第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不是常量)

  • 相关阅读:
    树状数组
    1424:【例题3】喷水装置
    Matrix (二分套二分
    素数筛
    快速幂
    CentOS6/7-防火墙管理
    Ubuntu15.04 python升级到python-3.6.x
    查看Linux系统用户登录日志
    [shell]查找网段内可用IP地址
    最小化安装Linux的常用配置整理
  • 原文地址:https://www.cnblogs.com/huangdengtao/p/11751256.html
Copyright © 2020-2023  润新知