C++面试必备:50道经典试题解析

4星 · 超过85%的资源 需积分: 24 17 下载量 79 浏览量 更新于2024-07-24 收藏 1.06MB PDF 举报
“50个C++经典面试题,涵盖变量声明与定义的区别、条件语句中的类型比较、sizeof与strlen的差异以及C与C++中static关键字的不同用法。” 在C++面试中,掌握核心概念和技术至关重要。以下是针对提供的面试题的详细解释: 1. 变量的声明与定义: 声明变量是在程序中告知编译器变量的类型和名称,但并不分配内存空间。例如,`int x;` 是声明,但没有分配内存。定义变量则同时声明并分配内存,如 `int x = 0;`。声明可以在多个地方出现,但定义仅能有一次。`extern` 关键字用于声明变量已在别处定义。 2. 条件语句中的类型比较: 对于不同类型的变量,与零值比较时,推荐将零值放在比较运算符的左侧,以避免赋值(`=`)和比较(`==`)的混淆。例如,对于bool型的`flag`,正确的比较是`if (flag)`。对于int型,应写成`if (0 != flag)`,对于指针,是`if (NULL == flag)`,而对于float,应确保在比较时不涉及浮点误差,可以使用`if ((flag >= NORM) && (flag <= NORM))`。 3. sizeof与strlen的区别: `sizeof` 是一个操作符,在编译时计算变量或类型占用的内存字节数。例如,`sizeof(int)` 返回int类型占据的字节数。而`strlen` 是一个库函数,用于计算以空字符`'\0'`结束的字符串的实际长度,它在运行时计算。例如,`strlen("hello")` 返回5,不包括末尾的空字符。数组在作为`sizeof`参数时不会退化为指针,而在函数参数中,如`strlen`,数组会退化为指向其首元素的指针。 4. C和C++中static关键字的差异: 在C语言中,`static` 关键字用于创建局部静态变量(在函数内部,其生命周期贯穿整个程序执行,而非每次函数调用),以及外部静态变量(在文件作用域,只在当前文件可见)。而在C++中,`static` 还可以用于类的静态成员变量和函数。静态成员变量属于类,而非类的任何实例,所有对象共享同一个静态成员。静态成员函数不能访问非静态成员,因为它们不与特定的对象关联。 这些面试题旨在测试面试者对C++基本概念、类型安全、内存管理和面向对象特性的理解。掌握这些知识不仅能帮助应对面试,也是编写高效、健壮代码的基础。在学习和实践中,深入理解这些概念,以及它们在不同上下文中的应用,是成为优秀C++程序员的关键。