C/C++面试精华:变量声明与定义、零值比较技巧、sizeof vs strlen及static差异

需积分: 9 3 下载量 102 浏览量 更新于2024-07-27 收藏 515KB PDF 举报
在C/C++编程面试中,面试官常常会考察求职者的基础理论和实践能力。以下是四道经典面试题及其背后的深层知识点: 1. 变量的声明与定义:声明和定义是两个不同的概念。声明(declaration)是指在程序中告诉编译器某个变量的存在,但并不分配内存空间,它可以在多个地方出现,如函数内部或外部。定义(definition)则是给变量分配内存并提供初始值,一般在一个作用域内仅能有一次。例如,使用`extern`关键字声明变量,表示其将在其他文件或后续位置被定义。 2. 数据类型的比较与零值判断:对于`bool`、`int`、`float`和指针,面试者需掌握正确比较它们与“零值”的方式。例如,`bool`类型使用`if (flag)`,`int`类型用`if (0 != flag)`,`NULL`常量用于指针`if (NULL == flag)`。为了避免潜在的逻辑错误,确保将“零值”写在等号的左侧。 3. sizeof与strlen的区别:`sizeof`是C/C++中的运算符,用于获取数据类型或变量在内存中占用的空间大小,其结果在编译时已知;而`strlen`是库函数,计算字符串的实际长度,需在运行时计算。此外,`sizeof`对数组参数处理不退化,而`strlen`处理数组会将其转换为指向首元素的指针。 4. C与C++中的static关键字:在C语言中,`static`用于局部静态变量和外部静态变量、函数,主要作用是维持局部变量的生存期和限制函数的全局可见性。然而,在C++中,`static`还有更丰富的用途,如静态成员变量和静态成员函数,它们不仅在类的作用域内保持独立存在,而且能在多个对象之间共享信息,实现跨对象的通信。 理解并掌握这些面试题有助于求职者展示扎实的编程基础,同时也能提升他们处理实际问题的能力。在面试过程中,对这些概念的深入理解和应用能力会被视为加分项。