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

需积分: 43 6 下载量 25 浏览量 更新于2024-07-30 收藏 532KB PDF 举报
"50个C、C++面试题.pdf" C和C++是两种重要的编程语言,它们在软件开发中扮演着基础角色。这里我们深入探讨一下几个经典的面试问题,涉及变量声明与定义的区别、数据类型的比较、sizeof与strlen的区别,以及C和C++中static关键字的不同用途。 面试题1关注变量的声明与定义。声明主要用于告诉编译器变量的类型和名字,而不实际分配内存。例如,当在头文件中声明变量,以便在多个源文件中使用时。定义则分配内存并初始化变量。一个变量可以多次声明,但只能定义一次。extern关键字用于声明一个变量,表明其定义在其他地方。 面试题2涉及到不同数据类型的条件判断。对于bool类型,可以直接用if(flag)来判断;对于int类型,应使用if(0!=flag)防止误写;对于指针,使用if(NULL==flag)进行比较;而对于float类型,需检查其是否在特定范围内,如if((flag>=NORM)&&(flag<=NORM)),以避免浮点数比较中的潜在问题。 面试题3比较了sizeof和strlen。sizeof是在编译时计算的,返回的是数据类型或变量所占用的内存字节数,而strlen计算的是以'\0'结束的字符串的长度,它在运行时进行。sizeof可以应用于数据类型和变量,但strlen只能用于字符串。数组作为sizeof的参数时不会退化为指针,而传递给strlen会变成指针。 面试题4讨论了C和C++中static关键字的差异。在C语言中,static用于创建局部静态变量(其生命周期贯穿整个程序执行),外部静态变量(其作用域限于当前文件)以及静态函数(限制函数的可见性)。而在C++中,static还能用于创建静态成员变量和静态成员函数,使得这些成员在所有对象实例之间共享,不依赖于特定的对象实例。 理解这些基本概念对于C和C++程序员至关重要,它们不仅出现在面试中,也是编写高效、健壮代码的基础。在实践中,正确使用声明和定义、熟练掌握条件判断的技巧、理解sizeof和strlen的用法以及灵活运用static关键字,都是提高编程技能的关键。