C/C++面试必看:变量声明与定义、零值比较、sizeof与strlen、static的差异

需积分: 9 0 下载量 84 浏览量 更新于2024-07-27 收藏 675KB PDF 举报
"这篇文档包含了四道C/C++面试题目,主要涉及变量声明与定义的区别、数据类型与零值比较的if语句、sizeof与strlen的区别以及C与C++中static关键字的不同用法。这些题目旨在考察面试者的基础知识和对语言特性的理解。" 面试题1详解: 在C/C++中,变量的声明告诉编译器变量的类型,但不分配内存。而定义则实际分配内存并初始化变量。声明可以重复,但定义只能有一次。例如,extern关键字用于声明变量已在别处定义,通常用于链接阶段解决符号引用。 面试题2详解: 不同数据类型的变量与零值比较时,应使用适当的if语句形式,以避免潜在的错误。对于bool型,非零被视为true,零被视为false,因此直接比较即可。对于int型,使用不等于0的表达式来防止赋值和比较的混淆。指针变量与NULL比较时,应将NULL放在左边,以利用编译器的错误检查。对于float型,需设定一个正常值范围(NORM)进行比较,因为浮点数不能直接与0比较。 面试题3详解: sizeof是C/C++中的一个操作符,其在编译时计算出表达式或类型占用的内存字节数,即使对于数组,它也能返回整个数组的大小。而strlen是C库函数,用于计算以'\0'为结束符的字符串的长度,它在运行时执行,不考虑非字符串数组。需要注意,数组作为函数参数时,会退化为指针,因此sizeof得到的是指针的大小,而不是数组的大小。 面试题4详解: 在C语言中,static关键字可以用于局部变量(创建静态局部变量,其在程序执行期间只初始化一次)和外部变量(使外部变量仅在本文件内可见)。而在C++中,static还可以用于类的成员变量和成员函数,创建静态成员变量意味着所有类的实例共享同一份存储,而静态成员函数不具备this指针,可以直接在类的非实例上下文中调用。 总结: 这四个面试题目涵盖了C/C++的基础语法和特性,包括变量声明与定义、条件判断的正确形式、内存计算操作符和静态成员的用法。理解这些知识点对于任何C/C++开发者来说都是至关重要的,尤其在面试或实际开发中,能够准确地应用这些概念将有助于提高代码质量和解决问题的效率。