关于C和C++区别的总结

C和C++区别

1、变量存储位置

  • 初始化且初始化不为0的  static 和 全局变量存储在data段
  • 未初始化或者初始化为0的static 和全局变量存储在bss段
  • 局部变量在栈上
  • new或者malloc申请的内存在堆上

2、struct和class的区别

  • C语言中struct不可以为空,c++可以且大小为1
  • C语言中struct仅仅是结构体,不可以包涵成员方法,c++中struct和class类似
  • c++中class内的成员默认为private,struc中成员默认为public
  • struct不可用来做模板
  • struct可以使用{}聚合类型方式赋值,class不可以

3、c++和C相互调用

  • c++调用C语言使用extern ”C” 修饰函数声明
  • C语言调用c++,如果可以改动源码,可以在c++源码中加上extern ”C”,让c++代码使用C语言编译规则
  • 如果不可以改动源码,需要使用一个中间的c++函数封装,并且使用extern ”C”,让他按照C语言规则编译

4、new和delete

  • new 申请内存   调用构造函数
  • delete 调用析构函数  释放内存

5、const

  • C语言中的const量是常变量(不可作为左值),c++中是常量(不可修改)
  • c++中的常量必须初始化
  • 常量在编译期自动替换为常量的值,所以常量不产生符号,仅本文件可见。常变量在使用的时候依然依赖地址寻址确认值,数据常变量已然产生local符号,仅本文件可见

6、引用(指针和引用的区别)

  • 引用相当于被引用量的别名,指代同一个量
  • 引用底层使用指针实现,虽然无法查看,但是底层也占用4字节空间
  • 引用底层是* const 的指针,必须初始化,而且一旦初始化,后期无法改变引用的指向
  • 引用在调用处自动使用指针的截引用进行替换,所以永远无法访问到引用自己的真实内存,所以引用一声=生只能引用一个量

7、inline

  • inline关键字修饰的函数为内联函数,是对系统的建议,并不绝对保证其处理为内联
  • 内联函数编译期在函数调用点展开
  • 内联函数不产生符号,仅本文件可见
  • 递归,循环等函数结构不可能被处理为内联
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值