C/C++面试精华:变量定义、零值比较、sizeof与strlen详解

5星 · 超过95%的资源 需积分: 43 7 下载量 147 浏览量 更新于2024-07-29 收藏 532KB PDF 举报
在C和C++的面试中,候选人经常被问到一些基础但关键的概念。这些题目涵盖了变量声明和定义的区别、数据类型与零值比较、sizeof和strlen的差异以及关键字static在两种语言中的不同用法。 1. 变量声明与定义的区别 - 声明是告诉编译器变量的存在,但不分配内存空间,允许在程序的不同部分多次声明。 - 定义则是为变量分配内存空间,一般情况下,一个变量只能在一个地方定义。 - 使用extern关键字声明的变量表示其定义在其他文件或后续代码中。 - 静态变量的声明(如C中的)可能在编译时不立即分配内存,只有在首次使用时才分配。 2. 数据类型与零值比较 - bool型:通过if(flag)检查是否为真,else分支处理假的情况。 - int型:if(0!=flag)检测非零值,避免误写"="导致逻辑错误。 - 指针型:if(NULL==flag)确保指针非空。 - float型:使用区间比较,如if((flag>=NORM)&&(flag<=NORM)),防止精度问题。 3. sizeof与strlen的对比 - sizeof是操作符,用于获取数据类型或变量所占内存大小,编译时计算。 - strlen是库函数,用于计算以'\0'结束的字符串长度,运行时计算。 - sizeof对数组不会退化为指针,而strlen处理字符串时会。 - 对于数组和特殊数据类型,注意区分操作符和函数,避免错误。 4. C和C++中static关键字的不同 - 在C中,static用于局部静态变量、外部静态变量和函数,提供记忆性和全局性通信。 - 在C++中,static除了上述功能,还可用于类的成员变量(静态成员)和成员函数(静态成员函数),支持跨对象实例间的通信。 掌握这些概念有助于应聘者展示对C和C++语言深入理解,尤其是在面试中评估候选人的基础技能和编码习惯。