栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++面试小问题(1)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++面试小问题(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 运算符并不会改变括号中运算对象的值,而是对该对象从位模式上进行重新解释.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/966078.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号