"C++面试题,涉及变量声明与定义、条件判断、sizeof与strlen的区别以及C与C++中static关键字的用法"
在C++面试中,掌握这些基础知识至关重要。首先,我们来看第一个面试题,关于变量的声明和定义。声明变量是在程序中告诉编译器变量的类型和名字,但并不分配内存空间。定义则是为变量分配内存并初始化。一个变量可以多次声明,但只能被定义一次。例如,使用`extern`关键字表示变量的声明,意味着它的定义在其他地方。
第二个面试题涉及到不同类型的变量与"零值"(如bool的`false`,int的`0`,float的`0.0`,以及指针的`NULL`)的比较。在编写if语句时,应将"零值"放在比较操作符的左侧,以防止意外的赋值操作导致逻辑错误。例如,对于bool型变量,简单的`if(flag)`就足够了,而对于int和指针,使用`if(0!=flag)`或`if(NULL==flag)`可以提供额外的错误检查。
面试题三讨论了`sizeof`和`strlen`的区别。`sizeof`是一个操作符,它在编译时计算出数据类型或变量占用的内存大小。而`strlen`是字符串处理函数,用于计算以`'\0'`结尾的字符串的实际长度,这个长度不包括结束符。需要注意的是,数组作为`sizeof`的参数时,返回整个数组的大小,而传递给`strlen`时,数组会退化为指针,`strlen`仅计算指针指向的字符串长度。
最后,面试题四提到了C和C++中`static`关键字的不同用途。在C中,`static`用于创建局部静态变量(其生命周期贯穿整个程序执行,而非仅限于函数调用),外部静态变量(作用域限制在当前文件),以及静态函数(不被其他文件链接)。而在C++中,`static`还能用于定义类的静态成员变量和函数,它们是所有对象共享的,而不是每个对象都有自己的一份副本。静态成员变量和函数可以在不依赖对象实例的情况下访问,提供了类级别的数据和行为。
理解和掌握这些C++面试题中的知识点对于准备面试或日常编程工作都是非常有益的。在编程时,正确使用声明和定义、理解条件判断的陷阱、熟练运用`sizeof`和`strlen`,以及恰当应用`static`关键字,都能提高代码的质量和可维护性。