:“比较有利用价值的华为中兴笔试题”
:“比较有利用价值的部分华为中兴笔试题,个人总结”
这篇内容涉及到的是计算机编程领域的基础知识点,主要涵盖C/C++语言、预处理指令、内存管理和函数调用等方面。以下是详细解释:
1. 表达式判断:
- A: 自增操作符优先级高于赋值操作符,所以先自增a再赋值,a变为5。
- B: 同理,a先自增,然后与a的旧值相加赋给a,a变为10。
- C: 左侧(a++)不是一个有效的左值,不能进行赋值操作,这个表达式是错误的。
- D: 先对a自增,然后将a的新值与a的旧值相加,a变为11。
2. sizeof运算符:
- sizeof(str):计算字符串的长度,包括结束符'\0',所以是17。
- sizeof(p):指针的大小,一般在32位系统中为4字节。
- sizeof(n):整型变量的大小,也是4字节。
- 在函数内部,str是一个局部变量,其大小与定义时相同,仍为4字节。
- sizeof(p):malloc返回的指针大小,无论分配多少内存,指针本身都是4字节。
3. 预处理指令:
- ifndef/define/endif:用于防止头文件被多次包含,避免重复定义问题。
- #include:单引号用于包含标准库头文件,双引号用于包含自定义头文件。
- extern "C":用于C++中调用C编译的函数,保持函数名不被C++的名称修饰。
4. 数据类型:
- switch语句不接受浮点数,只接受整型或枚举类型。
5. 动态内存管理与函数调用:
- Test函数中的GetMemory()分配了内存并返回,Test函数可以正常输出"hello"。
- 第二个Test函数释放了内存但未重新赋值,str仍然指向已释放的内存,打印"world"是未定义行为,可能输出任何内容。
- GetMemory()返回的是栈上的局部变量地址,该内存会在函数结束时回收,Test函数运行可能会导致访问无效内存,输出不确定。
6. strcat函数实现与分析:
- 自定义strcat函数实现字符串拼接,通过字符指针遍历直到遇到'\0',然后将源字符串逐个复制到目标字符串末尾。
- 返回值是为方便用户将拼接后的字符串赋值给其他变量。
7. MFC中的CString:
- CString是MFC提供的字符串类,但不是类型安全的,因为它可以隐式转换为其他字符串类型,可能导致意外的类型转换。
8. C++模板类的作用:
- 动态数据结构,如vector、list等容器。
- 提高代码复用,因为模板是泛型编程,适用于多种数据类型。
- 类型检查在编译时进行,保证类型安全。
- 代码的跨平台性,模板代码可以在多种平台上编译。
- 用于基本数据类型以及自定义类型的处理。
这些知识点对于理解和解答华为、中兴等公司的笔试题非常关键,涵盖了编程语言的基础概念和实践技巧。通过深入理解这些内容,可以提升编程技能,更好地应对类似的技术面试和笔试。