C/C++基础知识

1. 指针和引用的区别

  1. 一个指针可以被多次赋值,但是引用只可以在创建的时候就必须初始化,初始化完毕后就不可改变;
  2. 一个指针有它自己的内存地址和栈上的大小(x86上面为4byte),但是引用与原有变量共享相同的内存地址,但是在栈上仍然占用一些内存空间。
  3. 指针可以指向NULL,但是引用必须引用一个有效的对象;
  4. 一个指针需要使用*来访问它指向的内存地址,但是引用可以直接使用它引用的对象。指向类或者结构体的指针使用"->"来访问它的成员函数,而引用使用"."来访问

2. strlen和sizeof的区别

  1. sizeof是运算符,strlen是函数;
  2. 数组做sizeof的参数不退化,当数组传递给strlen就退化为指针了;
  3. sizeof的值在编译时即计算好了,而strlen要在运行时才能得到结果;
  4. sizeof可以用任何类型做参数,strlen只能用char*做参数,且必须是以"\0"结尾;

3. C中的malloc和C++中的new的区别

  1. new、delete是操作符,可以重载,只能在C++中使用;
  2. malloc、free是函数,可以覆盖,C、C++中可以使用;
  3. new可以调用对象的构造函数,对应的delete调用相应的析构函数;
  4. malloc仅仅分配内存,free仅仅回收内存,并不执行构造函数和析构函数;
  5. new、delete返回的是某种数据类型指针,malloc、free返回的是void指针。

4. C++中的拷贝构造函数

拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它的第一个参数必须是本类型的一个引用变量。什么时候会调用拷贝构造函数呢?
  1. 对象以值传递的方式传入函数;
  2. 对象以值传递的方式从函数返回;
  3. 对象需要另外一个对象进行初始化;



参考资料:

1. 点击打开链接

2. 知乎一篇文章中蓝色的回答写的很好


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值