C/C++面试宝典:基础问题解析与区别

需积分: 43 5 下载量 99 浏览量 更新于2024-07-27 收藏 532KB PDF 举报
C/C++作为底层编程语言,在面试和笔试中常常被考察其基础概念和细节。以下是几个经典面试问题及其背后的知识点: 1. **变量声明与定义的区别** - 声明(declaration)指的是在程序中告诉编译器某个变量的存在,但并不分配内存空间。声明可以出现在任何位置,多个地方可声明同一变量,如`extern`修饰的变量。 - 定义(definition)则是为变量分配内存并初始化,通常只在程序的一个特定区域进行。例如,外部变量可能仅声明,具体初始化在其他文件或程序部分。 2. **比较零值的if语句** - 对于`bool`类型,使用`if (flag)`检查,因为`bool`类型的零值是`false`。 - `int`和`float`类型,如果比较零值,应写为`if (0 != flag)`,避免因误写`=`导致编译错误和潜在逻辑问题。 - 指针类型使用`if (NULL == flag)`,确保正确处理空指针。 3. **sizeof和strlen的区别** - `sizeof`是一个运算符,用于获取数据类型或变量所占内存的字节数,编译时计算。 - `strlen`是库函数,用于计算以`\0`结束的字符串长度,需在运行时执行。 - `sizeof`处理数组不会退化为指针,而`strlen`应用于字符串时会。 4. **C和C++中的`static`关键字** - 在C语言中,`static`用于局部静态变量(生命周期贯穿整个函数执行)和外部静态变量(仅在首次声明时初始化)。 - C++中,`static`除了上述作用,还可用于类的成员(静态成员变量和静态成员函数),允许跨对象实例间的通信。 掌握这些基础知识,能帮助你在C/C++面试中展示扎实的基础和对细节的关注,提升通过面试和获得工作机会的可能性。在实际编程中,理解这些概念差异至关重要,它们有助于编写更高效、健壮的代码。