2021最新C++面试题(附答案)

您所在的位置:网站首页 美的ai面试题目大全答案及解析 2021最新C++面试题(附答案)

2021最新C++面试题(附答案)

2024-07-13 06:29| 来源: 网络整理| 查看: 265

今天分享给大家的是比较全面的C/C++面试题,也都是C++版本升级之后,重新整理归纳的最新答案,会让C++面试者少走很多不必要的弯路。同时每个C++面试题都尽量做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂,同时这部分C++面试文档也是可以免费的提供给有需要的同学们学习的!

博主已将大量C++相关面试题汇总整理成了一个PDF版的C++面试宝典,关注微 信 公 众 号 “C和C加加” 回复“面试题”即可获取!

一、计算机基础 1.C/C++内存有哪几种类型?

C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储区(常量)。此外,C++中有自由存储区(new)一说。 全局变量、static变量会初始化为缺省值,而堆和栈上的变量是随机的,不确定的。

2.堆和栈的区别?

1).堆存放动态分配的对象——即那些在程序运行时动态分配的对象,比如 new 出来的对象,其生存期由程序控制; 2).栈用来保存定义在函数内的非static对象,如局部变量,仅在其定义的程序块运行时才存在; 3).静态内存用来保存static对象,类static数据成员以及定义在任何函数外部的变量,static对象在使用之前分配,程序结束时销毁; 4).栈和静态内存的对象由编译器自动创建和销毁。

3.堆和自由存储区的区别?

总的来说,堆是C语言和操作系统的术语,是操作系统维护的一块动态分配内存;自由存储是C++中通过new与delete动态分配和释放对象的抽象概念。他们并不是完全一样。 从技术上来说,堆(heap)是C语言和操作系统的术语。堆是操作系统所维护的一块特殊内存,它提供了动态分配的功能,当运行程序调用malloc()时就会从中分配,稍后调用free可把内存交还。而自由存储是C++中通过new和delete动态分配和释放对象的抽象概念,通过new来申请的内存区域可称为自由存储区。基本上,所有的C++编译器默认使用堆来实现自由存储,也即是缺省的全局运算符new和delete也许会按照malloc和free的方式来被实现,这时藉由new运算符分配的对象,说它在堆上也对,说它在自由存储区上也正确。

4.程序编译的过程?

程序编译的过程中就是将用户的文本形式的源代码(c/c++)转化成计算机可以直接执行的机器代码的过程。主要经过四个过程:预处理、编译、汇编和链接。具体示例如下。 一个hello.c的c语言程序如下

#include int main() { printf("happy new year!\n"); return 0; }

其编译过程如下:

5.计算机内部如何存储负数和浮点数?

负数比较容易,就是通过一个标志位和补码来表示。 对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53。更多可以参考浮点数表示。 无论是单精度还是双精度在存储中都分为三个部分:

1). 符号位(Sign) : 0代表正,1代表为负 2). 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储 3). 尾数部分(Mantissa):尾数部分 其中float的存储方式如下图所示:

而双精度的存储方式如下图:

6.函数调用的过程?

如下结构的代码

int main(void) { ... d = fun(a, b, c); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3