c/c++语言开发共享C++基础 const

1. C中的const C中const变量只是只读变量,有自己存储空间。可能被存放在 栈、堆、数据段,所以可以修改。 2. C++中const 可能分配空间,也可能不分配空间。 当 const 为全局时,并且需要在其他文件中使用,或当使用 & 操作符取 const 常量的地址时,会分配空间。 3. …

1. c中的const

  c中const变量只是只读变量,有自己存储空间。可能被存放在 栈、堆、数据段,所以可以修改。

2. c++中const

  可能分配空间,也可能不分配空间。

  当 const 为全局时,并且需要在其他文件中使用,或当使用 & 操作符取 const 常量的地址时,会分配空间。

3. c++中const 和 #define 的联系

   (1)c++编译器堆const常量的处理

      当碰见常量声明时,在符号表中放入常量。

      编译过程中若发现使用常量则直接以符号表中的值替换

      编译过程中若发现对const修饰的常量使用了 extern 或者 & 操作符,则给对应的常量分配存储空间。

    (2)const 和 #define 的区别

       const 是在编译阶段处理, #define 是在预编译处理,

       const 有作用域,类型检查。 #define 只是纯粹的文本替换,作用域从定义开始直到文末或 #undef。

    int a = 1;     int b = 2;     int c[a + b];     上面这种定义是错误的(gcc除外)。          const int a = 1;     const int b = 2;     int c[a + b];     这样在c++中是正确的。     原因是当 c++ 编译器扫描到     const int a = 1;     const int b = 2;     会将 a ,b 放到 符号表中。     当扫描到 int c[a + b];     会直接将 a,b从符号表中替换,     也成了 int c[1 + 2];     所以 #define 和 const 在 c++中类似。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/607028.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐