C++面试小问题(1)

C++面试小问题(1),第1张

指针和引用的区别
  • 指针是一个变量,存储的是一个地址,引用跟原来的变量实质上是同一个东西,是原变量的别名
  • 指针可以有多级,引用只有一级
  • 指针可以为空,引用不能为NULL且在定义时必须初始化
  • 指针在初始化后可以改变指向,而引用在初始化之后不可再改变
  • sizeof指针得到的是本指针的大小,sizeof引用得到的是引用所指向变量的大小
  • 指针做函数参数传递时,是将实参进行拷贝传给形参,两者指向的地址相同(可以在·函数体内改变指向不影响实参,当然改变值还是会影响的,因为是同一块地址)。而引用不行。
堆和栈的区别

作为内存来说:

堆是由程序员创建和释放的,而栈是系统自动释放

堆的内存比较大,栈空间一般比较小

栈的执行效率一般比较高,分配速度快

堆的碎片化内存比较多,分配灵活

堆的方向是向上生长,栈向低地址方向生长

栈有静态分配和动态分配,静态分配由编译器完成(如局部变量分配),动态分配由alloca函数分配,但栈的动态分配的资源由编译器进行释放,无需程序员实现。堆只有动态分配

C++中四种类型转换机制

c++的类型转换可以分为显示类型转换和隐式类型转换,四种强制类型转换 *** 作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。

static_cast < type-id > ( expression ):该运算符把表达式转换为type-id类型,在编译时使用类型信息执行转换,在转换执行必要的检测(指针越界,类型检查),其 *** 作数相对是安全的。

dynamic_cast运算符将使用一个指向基类的指针来生成一个指向派生类的指针,它是在运行时检查的。

const_cast:去除const常量属性

reinterpret_cast(n):该运算符十分危险,reinterpret_cast 运算符并不会改变括号中运算对象的值,而是对该对象从位模式上进行重新解释.

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1353655.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-14
下一篇2022-06-14

发表评论

登录后才能评论

评论列表(0条)

    保存