C/C++笔试面试经典题目解析
需积分: 3 122 浏览量
更新于2024-08-02
收藏 406KB DOC 举报
"c/c++ 笔试面试题"
这篇资料是关于C/C++的笔试和面试题目集合,包含了多个方面的问题,旨在测试对这两种编程语言的理解和掌握程度。问题覆盖了基本语法、类型转换、字符串处理等多个核心知识点。
1. 这一组问题涉及到C++中的字符串比较。在C++中,字符串实际上是以字符数组的形式存在的。`str1`和`str2`都是字符数组,它们在内存中存储的是同一串字符"abc",因此它们的地址不同,但内容相同。所以`(str1 == str2)`会比较它们的地址,输出`false`。`str3`和`str4`同理,但由于声明为`const char[]`,它们是常量字符数组,同样内容不同地址,也会输出`false`。`str5`和`str6`是`const char`指针,它们都指向常量字符串"abc"在内存中的同一位置,因此`(str5 == str6)`会输出`true`。
2. 这个问题探讨了C++中的隐式类型转换。非内置类型`A`和`B`之间,`B`可以在以下几种情况下隐式转化为`A`:
- `B`类公有继承自`A`(包括间接继承),使得`B`对象可以被视为`A`对象。
- `B`类中有一个成员函数`operator A()`,该函数允许`B`对象被当作`A`对象使用。
- `A`类有一个非`explicit`的构造函数,接受`B`类型的引用或指针作为参数。
- 虽然不是严格意义上的隐式类型转换,但是`A`类定义了赋值操作符`A& operator=(const A&)`,这使得`B`对象可以通过赋值操作转换为`A`对象。
3. 这个问题涉及到C++中的`sizeof`运算符。`sizeof(str)`返回整个数组`str`所占用的字节数,而`sizeof(str[0])`返回单个元素(在这里是`char`)的大小。在循环中,通常使用`sizeof(str)/sizeof(str[0])`来获取数组的元素个数。然而,当`str`传递给函数时,它实际上被当作指针处理,`sizeof(str)`只返回指针本身的大小,而不是整个数组的大小。因此,如果`str`是一个数组参数,这种计算方式可能会导致错误,因为它不会得到预期的数组长度。正确的做法是将数组长度作为额外参数传递给函数,或者在函数外部计算数组长度并传入。
这些问题反映了C/C++面试中常见的陷阱和重点,涵盖了基础语法、类型系统以及函数参数传递等核心概念。准备C/C++面试或笔试时,深入理解这些知识点是非常重要的。
316 浏览量
2009-08-14 上传
2009-11-11 上传
361 浏览量
2025-01-09 上传
188 浏览量
2024-11-03 上传
156 浏览量
202 浏览量
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
scholes24
- 粉丝: 1
最新资源
- C++实现AES加密算法源代码封装技术
- AuthCode项目存储库的Python实现及代码解析
- Java实现简易版Total Commander风格文件管理器
- 1秒连拍10张,相机速度新体验
- PHP高功能分页类库-数据库与数组分页支持
- STC单片机开发工具:串口自动识别与多命令支持
- 在线图片查看器:支持触控缩放与图片切换功能
- Android网络图片加载方法演示与实践
- 深入解析module5solution的JavaScript实现
- Visual C++课程设计案例精编源代码合集
- Craiglist汽车比较助手插件功能介绍
- 实现A站视频弹幕效果的jQuery代码教程
- 深入解析Android 5.0音乐源码与应用效果
- PHP脚本实现Slack与Asterisk的集成解决方案
- CButtonST在VS2010下的使用和按钮美化技巧
- 构建垂直原型测试大型Hogwarts学生名单数据