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

需积分: 10 0 下载量 168 浏览量 更新于2024-07-23 收藏 532KB PDF 举报
"C C++面试题集合,包含变量声明与定义的区别,变量与零值比较的if语句,sizeof与strlen的区别,以及C与C++中static关键字的不同用途。" 在C和C++编程中,面试题经常涉及到一些基础但重要的概念。以下是这些面试题的详细解释: 面试题1探讨了变量的声明与定义。声明变量时,只是告诉编译器变量的存在和类型,而不会分配实际的内存空间。例如,`extern int x;` 是声明,表示`x`将在其他地方定义。定义变量则会分配内存,如 `int x = 10;`。变量可以在多个地方声明,但只能在一个地方定义。 面试题2展示了如何使用if语句来比较不同类型的变量与零值(或NULL)。对于bool型,可以直接使用 `if(flag)` 判断。对于int型,推荐使用 `if(0!=flag)` 防止等号误写成赋值号。指针变量的零值比较通常用 `if(NULL==flag)`,而浮点型数据则需确保在一定范围内比较,因为浮点数的精度问题。 面试题3讨论了sizeof和strlen的区别。sizeof是一个操作符,它在编译时计算变量或类型所占用的内存字节数。例如,`sizeof(int)` 返回int类型的字节数。而strlen函数用于计算以'\0'结尾的字符串的实际长度,它在运行时计算,如 `strlen("hello")`。数组作为sizeof的参数时,返回整个数组的大小,而作为strlen的参数,它会被降级为指针,所以strlen只能计算字符串的长度。 面试题4涉及到C和C++中的static关键字。在C中,static用于创建局部静态变量(在函数内部,但生命周期跨越函数调用)和外部静态变量(只在本文件内可见)。而在C++中,static还可以用于定义静态成员变量和静态成员函数,前者在所有对象实例间共享,后者不是每个对象实例都有的副本,而是类级别的。 这些面试题覆盖了C和C++的基础知识,对于求职者来说,理解并能熟练运用这些概念是至关重要的。在面试中,能够清晰地阐述这些差异和用法,将有助于展现你的编程技能和理解深度。