博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C与C++的区别

Posted on 2023-03-12 22:18  乔55  阅读(14)  评论(0编辑  收藏  举报

C++比C有所增加

  • register增强
    • C
      • 请求编译器将局部变量存储于寄存器中,寄存器中变量操作速度更快
      • 但C无法取得register变量地址
      • C可通过register关键字人为地优化代码,提高效率
    • C++
      • 仍然支持register,且可取register变量地址
      • C++编译器有自己的优化方式,不必人为地使用register去优化代码,因此C++中register变得无缘鸡肋
      • 当C++中取得register变量地址时,编译器就认为无法将此变量存放到寄存器中
  • 同名变量增强
    • C中定义多个同名的全局变量是合法的,C++是非法的
    • C中定义的多个同名全局变量,最终会被链接到全局数据区的同一地址空间,C++拒绝这种二义性
  • 类型的增强
    • C中struct被认为是定义了一个变量的集合
    • C中枚举只能用枚举出来的元素初始化
    • 新增了bool类型
  • 对三目运算符增强
    • C++中三目运算符的结果可做左值,C的却不可以
    • 当且仅当3目运算符中的3个参数都是变量时才可做左值
  • 对const增强
    • C:
      • const变量只是只读变量,不是真正的常量,仍可通过指针修改其值
      • const变量有自己的内存空间
    • C++
      • const变量是真正的常量
      • 当const常量为全局时,且需要在其他文件中使用时,它有自己的内存空间
      • 当使用取址操作符对const常量取地址时,它有自己的内存空间