2019年秋招面试自己吐血整理的资料 C++: 共计32页,30282字 总结的知识点基本涵盖了计算机专业相关面试的基础理论知识,足以应对一般的计算机类工作面试,并且已经按照知识模块进行了目录索引,方便查询 C++基础知识涵盖了许多重要的概念,尤其对于面试和日常工作至关重要。以下是一些关键点的详细解释: 1. **字符串和指针操作**: - 在C++中,字符串是以字符数组的形式存在的,通常以空字符'\0'作为结束标识。因此,使用`strcpy`时必须确保目标数组有足够的空间容纳源字符串及其结束符。 - `strcpy`函数会逐个复制源字符串到目标数组,直到遇到'\0'。因此,确保目标数组大小至少比源字符串长度多1,以防止数组越界。 示例1.1中,`strcpy(string, str1)`可能导致数组越界,因为`string`只有10个字节,而`str1`包含11个字节(包括'\0')。 示例1.2中,试图直接赋值给数组名`str1`是错误的,应该使用`*str1 = 'a'`来赋值给数组的第一个元素。正确做法是先填充`str1`数组,然后使用`strcpy`进行复制。 示例1.3中,`strlen(str1) <= 10`检查不考虑'\0',应更改为`strlen(str1) < 10`,以确保有空间存放结束符。 1. **动态内存管理**: - 使用`malloc`分配内存后,必须确保在不再使用时调用`free`释放,否则会造成内存泄漏。 - 示例1.4中,`GetMemory`函数内的`malloc`分配的内存无法直接影响到`Test`函数中的`str`,因为`str`在`GetMemory`中被赋值为`NULL`。正确的做法是让`GetMemory`返回分配的内存地址。 示例1.5中,返回局部变量数组`p`的地址是不安全的,因为局部变量在函数退出后会被销毁。可以返回指向常量字符串的指针或使用静态数组。 示例1.6中,通过指针的指针`char**p`传递内存地址,可以正确地将分配的内存地址赋予外部变量。但要注意检查`malloc`是否成功,并在不再使用时释放内存。 1. **内存错误和野指针**: - 示例1.7展示了如何正确分配内存,使用`strcpy`复制字符串,然后释放内存。释放内存后,最好将指针设为`NULL`,以防止成为野指针。 这些基础知识不仅适用于面试,也是实际编程中必不可少的。了解并熟练掌握这些知识点,可以有效地避免程序运行时的错误,提高代码质量和可维护性。在编写C++程序时,应始终关注内存管理、指针操作和字符串处理,以确保程序的健壮性和安全性。