C/C++面试必知:基础概念与陷阱解析

需积分: 24 1 下载量 118 浏览量 更新于2024-07-24 收藏 1.06MB PDF 举报
“C/C++经典面试题 - 涵盖50大面试问题,包括变量声明与定义的区别、数据类型与零值比较、sizeof与strlen的对比以及C与C++中static关键字的不同用途。” 在C/C++编程领域,面试题常常涉及到基础概念的深入理解和应用。以下是针对提供的四道面试题的详细解析: 面试题1:变量的声明和定义 声明(Declaration)主要告诉编译器变量的类型和名称,但并不分配内存。定义(Definition)则是实际为变量分配内存并初始化的过程。一个变量可以多次声明,但只能有一次定义。例如,当在头文件中使用`extern`声明变量时,意味着该变量在其他地方定义,避免了重复定义导致的错误。 面试题2:数据类型与零值比较 在条件语句中,比较不同数据类型与零值时,应将零值放在比较运算符的左侧,以防止因误写`=`为`==`导致的隐性赋值错误。对于bool型,简单的`if(flag)`即可判断;对于int型,使用`if(0!=flag)`;对于指针型,使用`if(NULL==flag)`;对于float型,需考虑浮点数的近似表示,通常设定一个正常值范围`NORM`进行比较,如`if((flag>=NORM)&&(flag<=NORM))`。 面试题3:sizeof和strlen的区别 `sizeof`是一个在编译时计算的运算符,用于获取数据类型或变量占用的字节数。它可以用于类型或变量,例如`sizeof(int)`或`sizeof(arr)`。而`strlen`是一个运行时函数,用于计算以`\0`结束的字符串的实际长度,不包含末尾的`\0`。数组作为`sizeof`的参数时,会得到整个数组的大小,但传递给`strlen`时,数组会退化为指针,`strlen`只能计算指针指向的字符串长度。 面试题4:C和C++中static关键字的区别 在C语言中,`static`用于声明局部变量(在函数内部)保持其生命周期跨越函数调用,以及声明外部变量(全局变量)使其作用域限制在当前文件内。而在C++中,`static`增加了新的用途:它可以用来定义类的静态成员变量和静态成员函数。静态成员变量是所有对象共享的,不与特定对象关联,而静态成员函数可以直接通过类名访问,无需创建对象实例。 这些面试题展示了对C/C++基本概念的深入理解是开发者必备的技能。在面试中,理解这些细节不仅可以展示扎实的基础,还能反映出对编程实践的敏感度和问题解决能力。