C/C++笔试面试经典题目解析
需积分: 3 69 浏览量
更新于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++面试或笔试时,深入理解这些知识点是非常重要的。
2009-08-17 上传
2024-06-17 上传
2023-08-14 上传
2023-07-09 上传
2024-08-22 上传
2023-07-28 上传
2023-05-10 上传
scholes24
- 粉丝: 1
- 资源: 14
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景