C++编程基础与面试:浮点精度、字符串输出与内存占用
需积分: 12 72 浏览量
更新于2024-09-01
收藏 29KB DOCX 举报
"C++考试面试练习题包含了C++语言的基础知识,如数据类型精度、字符串处理、内存管理、构造函数的调用顺序以及数组和指针的特性。"
在C++编程语言中,浮点数的数据类型有特定的精度限制。`float`类型的精度能够保证到小数点后大约6位,而`double`类型则可以保证到小数点后大约15位。这是由于浮点数在计算机内部是用二进制表示的,因此它们不能精确地表示所有十进制小数,导致了这种精度限制。
在题目中的第五题,给出的字符串`char c[] = "renaite/0am"`,当使用`printf("%s",c)`输出时,会打印从`c`所指向的字符序列直到遇到空字符`\0`为止。所以输出的结果将是`(renaite/0am)`,因为字符串以空字符结束。
第11题中,"仁爱"在内存中占用6个字节,包括汉字"仁"、"爱"和一个空格。每个汉字在UTF-8编码下通常占用3个字节,加上空格的一个字节,总计6字节。
对于第四题,类`A`有一个公有成员变量`a`和一个构造函数。`class B`和`class C`分别通过虚继承自`A`。根据C++的虚继承规则,每个含有虚基类的子类在对象中都会包含一个指向虚基类的指针,从而导致`sizeof(B)`和`sizeof(C)`大于`sizeof(A)`。实际输出为`48 12 48`,这表明`A`的大小为48字节,`B`的大小为12字节,`C`的大小为48字节,这反映了虚继承带来的额外开销。
第五题,尝试对函数`func()`的返回值取地址并赋值给`p`是不合法的,因为函数返回值是在栈上临时创建的,生命周期仅限于函数调用,不能被持久化存储或取地址。所以这个程序会编译报错。
第六题,`str`是一个字符数组,其名`str`实际上是首元素的地址,即一个常量指针。尝试在`printf`中使用`str++`会导致编译错误,因为数组名不能被修改。正确的方式是访问数组元素,如`str[1]`,而不是改变数组名。
最后一题中,`class A`有两个子类`B1`和`B2`,它们都通过虚继承自`A`。在`class C`中同时继承`B1`和`B2`时,由于虚继承,构造函数的调用顺序遵循先基类后子类的原则,所以构造顺序是`A -> B1 -> B2`。在主函数中,`c.a`的输出取决于`A`的`a`成员,因为`C`中并没有直接定义`a`。所以输出的结果是3,这是`B2`的构造函数中赋予`a`的值。
这些题目涵盖了C++的基本概念,如数据类型、字符串操作、内存管理、构造函数调用顺序以及数组和指针的特性,这些都是理解和掌握C++编程的基础。
2020-12-26 上传
2023-01-28 上传
2020-08-31 上传
2024-09-24 上传
2024-09-24 上传
2024-09-24 上传
2024-09-23 上传
2021-10-22 上传
2020-06-29 上传
充满鲜花的世界到底在哪里
- 粉丝: 62
- 资源: 12
最新资源
- matlab解压代码-RiderID:“使用横向力扰动测试骑自行车的骑手控制识别”中自行车骑手控制系统识别的源代码,Schwab、deLang
- 24C16.rar_微处理器开发_C/C++_
- 第6章+信号处理电路-教程与笔记习题
- HTML网站源码-室内家居建筑设计响应式网页模板-适配移动端&PC端.zip
- 基于TV-Nesterov算法的医学图像去噪算法matlab仿真+仿真录像
- 电子工程物理基础v1.0(4)-教程与笔记习题
- 网页文章采集工具-易语言
- 【WordPress插件】2022年最新版完整功能demo+插件.zip
- you-win:一个友好的游戏库,供以前可能使用过Scratch的怪异人群使用
- 基于html5 canvas绘制彩色浮动的粒子动画特效源码.zip
- mems.rar_C/C++_
- seirs_SEIRS_SEIRS仿真代码_
- bryhlee.github.io:Bryson Lee(bryhlee)的个人网站
- HTML网站源码-休闲旅行商务响应式网页模板-适配移动端&PC端.zip
- matlab解压代码-XVFI:XVFI的官方存储库
- VB+ACCESS自动组卷系统(源代码+系统).rar