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

需积分: 24 1 下载量 134 浏览量 更新于2024-07-24 收藏 1.06MB PDF 举报
"C++经典50大面试题" C++面试题涵盖了许多核心概念,对于理解和掌握这门编程语言至关重要。让我们深入探讨一下提供的四道面试题所涉及的知识点。 面试题1强调了变量声明与定义的区别。声明变量是在程序中告知编译器变量的类型和名字,但不分配内存。定义变量则是为变量分配内存并初始化。在C++中,一个变量可以多次声明,但只能被定义一次。使用`extern`关键字声明变量表示其定义在其他地方。例如,外部变量通常在文件的开头声明,而在文件的其他部分定义,以便在整个程序中使用。 面试题2涉及了不同类型的变量与"零值"(如`bool`的`false`、`int`的`0`、`float`的`NORM`以及`NULL`指针)比较的正确做法。在编写条件语句时,应将"零值"放在比较运算符的左侧,以避免将`=`误写成`==`时编译器无法检测到的潜在错误。例如,对于`bool`类型的`flag`,正确的比较是`if(flag)`,对于`int`类型的`flag`,应写为`if(0 != flag)`,对于指针类型的`flag`,使用`if(NULL == flag)`,而对于`float`类型的`flag`,应确保比较范围包含`NORM`,如`if((flag >= NORM) && (flag <= NORM))`。 面试题3讨论了`sizeof`和`strlen`的区别。`sizeof`是一个操作符,它在编译时计算出数据类型或变量占用的内存大小,即使对于数组,它也不会因为函数调用而退化为指针。而`strlen`是一个库函数,用于计算以`\0`结束的字符串的长度,它必须在运行时计算,因此效率较低。需要注意的是,如果误将`=`写成`==`,`strlen`不会报错,而`sizeof`会。 面试题4提到了C和C++中`static`关键字的不同用法。在C中,`static`可以用于局部变量(使其在函数调用之间保持其值),外部变量(限制其作用域为当前文件)和函数(使函数成为内部链接,仅在当前文件可见)。而在C++中,`static`还可以应用于类的成员变量和成员函数,创建静态成员变量意味着所有类对象共享同一份存储,而静态成员函数不能访问非静态成员,因为它们不与特定的对象关联。 这些面试题揭示了C++中基础但关键的概念,包括变量声明与定义、条件语句的正确构造、内存管理和类的静态特性。理解和掌握这些知识点对于任何C++开发者来说都是至关重要的。