华为C++笔试题(附答案)

【知识点详解】 1. 自增自减运算符的优先级和结合性: 在C++中,自增自减运算符具有不同的优先级和结合性。例如表达式 `(A)a += (a++)` 中,先执行 `a++`,然后进行赋值操作,所以 `a` 的值变为 5。而 `(B) a += (++a)` 中,`++a` 先自增 `a`,然后进行赋值,`a` 的值变为 6。对于 `(C) (a++) += a;`,由于左侧不是一个有效的左值,该表达式是错误的。改正后 `(D) (++a) += (a++)`,`++a` 先自增,然后赋值,最后 `a++`,`a` 的最终值为 11。 2. `sizeof` 运算符: - `sizeof(str)` 计算字符串常量的长度,包括结束符 `\0`,所以其值为 17。 - `sizeof(p)` 返回指针变量的大小,通常为 4 字节。 - `sizeof(n)` 计算整型变量的大小,一般为 4 字节。 - 在函数内部,`sizeof( str )` 依旧计算数组的大小,即使传递了数组的一部分,也仍视为整个数组,值为 4 字节。 - `sizeof(p)` 返回指针变量的大小,同样为 4 字节。 - `malloc` 返回的内存块大小需要通过参数指定,`sizeof(p)` 不会返回分配的内存大小,仍为 4 字节。 3. 预处理指令理解: - `#ifndef/define/endif` 用于条件编译,防止头文件被多次包含。 - `#include` 通常用于包含标准库头文件,而 `#include "filename.h"` 用于包含用户自定义的头文件。 - `extern "C"` 用于告诉C++编译器按照C语言的方式链接函数,解决C和C++混编时的名称修饰问题。 4. 数据类型与语法规则: - `switch` 语句不接受浮点型数据作为条件。 5. 动态内存管理: - `GetMemory` 函数分配内存并返回,Test 函数正确使用了动态内存,输出 "hello"。 - 第二个 Test 函数在释放内存后仍然使用该指针,这可能导致未定义行为,但在这个特定情况下,输出 "world"。 - 第三个 Test 函数返回的是局部变量的地址,这将导致悬挂指针,输出不确定。 6. 自定义 `strcat` 函数: 自定义 `strcat` 的目的是在不使用C++/C标准库的情况下,将源字符串连接到目标字符串的末尾。返回值为 `strDest` 的目的是为了符合C++的函数约定,允许函数返回指向结果的指针,并且可以链式调用。 7. C++模板: - 模板提供了一种泛型编程的手段,可以创建泛型类或函数,适用于多种数据类型,提高代码复用性。 - 在编译时生成特定类型的代码,确保类型安全。 - 模板使得代码跨平台移植更简单。 - 通过模板,可以实现如动态数组、映射等数据结构。 8. MFC中的 `CString` 类: - `CString` 是MFC框架中的一个类,用于处理字符串,但它不是类型安全的,因为可以隐式转换为 `LPCTSTR`,可能导致类型不匹配的问题。 9. `CSingleLock`: `CSingleLock` 是MFC中用于线程同步的类,主要用于实现对临界区(Critical Section)的锁定,确保同一时刻只有一个线程能访问受保护的资源。











剩余63页未读,继续阅读

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 探讨机械设计制造及其自动化的发展.docx
- 探讨机械设计制造及其自动化的发展.docx
- 探讨机械设计制造及其自动化特点与优势.docx
- 探讨机械设计制造及其自动化特点与优势.docx
- 施工进度计划的编制及Project软件的应用省名师优质课获奖课件市赛课一等奖课件.ppt
- 电子商务会议优秀主持词(1).doc
- 80X86--------------------微型计算机------------组成原理及接口----------------------——-多媒体教学.pptx
- 电力信息化、标准化、规划化发展基础.pptx
- FlashCS6实例教程(第3版)-教学大纲(可编辑修改word版).docx
- 2023年郭天祥单片机笔记.docx
- 万阔互联网招商手册.docx
- 基于嵌入式QT平台下GISGPS电子定位系统设计.doc
- 上海海事大学可编程控制器考试试题示例(20页).doc
- 有限公司Java编码规范.doc
- 第十一章-电子商务规划与实施ppt课件(全).ppt
- 微型计算机原理与接口技术第九章.ppt



- 1
- 2
前往页