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

需积分: 43 2 下载量 58 浏览量 更新于2024-07-30 2 收藏 532KB PDF 举报
"这篇资源主要涵盖了C/C++面试中常见的问题,包括变量声明与定义的区别、数据类型与零值比较的正确方式、sizeof与strlen的区别,以及C和C++中static关键字的不同用法。" 面试题1详解:在C/C++中,变量的声明和定义是两个不同的概念。声明(declaration)仅仅告诉编译器变量的名称和类型,而不分配存储空间。而定义(definition)则是实际为变量分配内存并初始化的过程。一个变量可以在多个源文件或作用域内声明,但只能在一个地方定义。使用extern关键字可以声明变量,表示其定义在其他地方。 面试题2详解:在比较不同类型的变量与零值时,需要使用适当的条件语句。对于bool类型,可以直接用if(flag)来判断;对于int类型,应使用if(0!=flag)防止误写成赋值操作;指针类型的比较则使用if(NULL==flag),这有助于在编译阶段发现潜在的赋值错误;对于float类型,由于浮点数可能有精度问题,一般会通过设定一个正常范围来判断。 面试题3详解:sizeof是C/C++中的一个操作符,它在编译时就能计算出表达式或类型所占的字节数,而strlen是一个C库函数,用于计算以'\0'结束的字符串的长度,它在运行时计算。sizeof可以应用于类型或变量,而strlen只能接收字符串。数组作为sizeof的参数时,其大小不会被转换为指针的大小,而在传递给strlen时,数组名会退化为指向首元素的指针。 面试题4详解:在C语言中,static关键字用于创建局部静态变量和外部静态变量,它们的作用是保持变量的生命周期跨越函数调用,以及限制变量的作用域。而在C++中,static还可以用于创建类的静态成员变量和静态成员函数。静态成员变量属于整个类,而不是类的任何特定实例,这意味着所有对象共享同一份存储空间;静态成员函数也不与任何特定对象关联,可以独立于对象调用。 这些面试题揭示了C/C++中的基础概念和细节,包括内存管理、类型比较、运算符理解以及static的关键作用,这些都是程序员在日常开发和面试中需要掌握的核心知识。深入理解和熟练应用这些知识点,将有助于在面试中表现出扎实的技术功底。