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

需积分: 10 1 下载量 117 浏览量 更新于2024-07-26 收藏 690KB PDF 举报
"本文主要介绍了四个C/C++面试中常见的问题,包括变量声明与定义的区别、布尔、整型、浮点型及指针变量与零值比较的if语句、sizeof与strlen的区别以及C和C++中关键字static的不同含义。这些问题涉及到基本语法、类型比较、运行时与编译时计算、以及静态成员的特性。" 1. 变量的声明与定义 声明变量主要是告诉编译器变量的类型和名字,而不涉及内存分配。一个变量可以在多个源文件或函数中声明,但只能在一个地方定义,即分配内存空间。例如,extern关键字用于声明变量已在其他地方定义,它不分配内存,只是提供一个引用。 2. 数据类型与零值的比较 在C/C++中,比较时需要注意防止赋值与比较的混淆。对于bool型,直接用flag作为条件即可;对于int型,使用`0!=flag`;对于指针,使用`NULL==flag`;对于浮点型,可以使用区间判断`if((flag>=NORM)&&(flag<=NORM))`,其中NORM为规定的正常值范围。这样的写法能提高代码的健壮性,减少潜在的逻辑错误。 3. sizeof与strlen的区别 sizeof是编译时操作符,计算的是数据类型或变量所占用的内存大小,而strlen是一个运行时函数,用于计算以'\0'结尾的字符串的实际长度。sizeof能作用于类型和变量,而strlen仅适用于字符串。数组作为sizeof的参数不会退化为指针,但在传递给strlen时会退化为指针。 4. C与C++中的static关键字 在C语言中,static关键字用于创建局部静态变量(生命周期跨越函数调用)和外部静态变量(只在当前源文件可见)。而在C++中,static还可以用于创建静态成员变量(所有对象共享同一份存储)和静态成员函数(不依赖于特定的对象实例,直接与类关联)。 理解这些面试题中的知识点,对于提升C/C++程序员的技能和解决实际编程问题非常关键。掌握变量声明与定义的规则,正确编写数据类型的比较语句,了解sizeof和strlen的功能差异,以及熟悉static在两种语言中的不同作用,都是C/C++开发者必备的基础能力。在面试中能够清晰地解答这些问题,不仅能展示扎实的语法功底,也能体现对程序执行流程和内存管理的深入理解。