第二课 C语言到C++的升级

第二课 C语言到C++的升级

一、C与C++的关系

  • C++继承了所有C的特性

  • C++在C的基础上提供了更多的语法和特性

  • C++的设计目标是运行效率与开发效率的统一

  • C++

    以C语言为基础

    面向对象支持

    类型加强、函数加强、异常处理…

  • C+更强调语言的实用性

  • 搜有的变量都可以在需要使用时再定义

  • 在C语言中,重复定义多个同名的全局变量时合法的,这些全局变量最终会被链接到全局数据区的同一地址上

    在C++中,不允许定义多个同名的全局变量

  • C++所有的标识符都必须显示的声明类型

  • C语言中的默认类型在C++中是不合法的

  • 三目运算,C语言不能作为左值(返回的是变量值),C++可以(返回的是变量本身,但是其中只要有一个为常量,就不能作为左值)

    C:a = (a<b?a:b)

    C++:(a<b?a:b) = 3

二、register 关键字

  • register 关键字请求编译器将局部变量存储与寄存器中

    在C++中依然支持register关键字

    C++编译器有自己的优化方式

    • C语言中无法获取register变量的地址
    • C++中可以取得register变量的地址
  • C ++中的register 关键字

    C++编译器发现程序中需要取register变量地址时,register对变量的声明变得无效(早期C++编译器)

    早期的C语言编译器不会对代码进行优化,因此register变量是一个很好的补充

三、struct 关键字的加强

  • C语言

    struct 定义了一组变量组合

    strucct定义的标识符并非一种新的数据类型,如果需要定义新的类型,需要加typedef

  • C++

    struct用于定义全新的类型

四、面试小问题

  • int f()和int f(void)有什么区别?

    • C语言

      int f()表示返回值为 int,接受任意参数的函数

      int f(void)表示返回值为int的无参函数

    • C++

      具有相同的意义,表示返回值为int的无参函数

五、小结

  1. C ++更强调实用性,可以在任意的地方声明变量
  2. C++中的register关键字只是一个兼容作用
  3. C++编译器能够更好的进行优化
  4. C++中的任意标识符都必须显示的指明类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值