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关键字声明,可以从其他文件访问相应的变量和函数。

  • 相关阅读:
    Base64原理与实现
    Oracle中rownum用法警示
    实例游戏内存修改器----CUI版本模拟
    Win32进程创建、进程快照、进程终止用例
    pThreads线程(三) 线程同步--条件变量
    pThreads线程(二) 线程同步--互斥量/锁
    pThreads线程(一) 基本API
    VS调试快捷键
    运行程序报“应用程序配置不正确”或者缺少运行库造成程序不可移植的问题
    C++模拟键盘消息
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/6210675.html
Copyright © 2011-2022 走看看