zoukankan      html  css  js  c++  java
  • C、C++中const的区别

    C语言中:

      被const修饰的变量,仍然是变量。虽然不能用C语法给这个变量改变值,但他本质上还是变量。

      C编译器会给它分配空间。

      C中,const默认使用的是外部链接。

    C++中:

      被const修饰的变量,实际上已经是一个真正的常量了。

      而且,当在定义该常量的文件内使用时,C++编译器是不给该常量分派内存空间的,常量只会存在于符号表内。但是以下两种情况例外:1、当该常量被extern修饰之后(如果想要在其他文件中使用,也必须用extern修饰),表示告诉编译器,这个常量要使用外部链接,即有其他的编译单元会用寻址的方法来引用它。C++会给该const常量分配空间。2、本文件中若引用了该const变量的地址,编译器也是会被给它分配空间的。

      C++中const默认使用内部链接。

      总之,C++中,是否为const分配空间要看具体情况.
      如果加上关键字extern或者取const变量地址,则编译器就要为const分配存储空间.
      C++中定义常量的时候不再采用define,因为define只做简单的宏替换,并不提供类型检查

    内链接:编译器只对正在被编译的文件创建存储空间别的文件可以使用相同的表示符号或全局变量,C/C++中内连接使用static 关键字。

    外链接:为所有被编译过的文件创建一片单独的存储空间。一旦空间被创建,连接器必须解决对这片存储空间的引用。全局变量和函数使用外部链接。通过extern关键字声明,可以从其他文件访问相应的变量和函数。

  • 相关阅读:
    阿里云Centos 8.2安装LNMP环境
    TP6中缓存的使用
    TP6中命令行
    TP6中请求和响应
    TP6模型操作
    TP6中数据库操作
    TP6中验证器的使用
    TP6如何使用文件上传
    3. Longest Substring Without Repeating Characters
    1. Two Sum
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/6210675.html
Copyright © 2011-2022 走看看