C/C++面试精华:变量声明、比较、sizeof与strlen、static的区别

需积分: 43 0 下载量 166 浏览量 更新于2024-07-27 收藏 532KB PDF 举报
"本文提供了50个C、C++面试题的部分内容,涵盖了变量声明与定义的区别、数据类型的条件判断、sizeof与strlen的区别以及static关键字在C和C++中的不同用法。" 在C和C++编程语言中,理解变量声明和定义的区别是至关重要的。声明变量主要是告诉编译器变量的类型,而定义则是为变量分配存储空间并初始化。一个变量可以在多个源文件中声明,但只能在一个地方定义。例如,使用`extern`关键字声明变量意味着它的定义在其他地方。对于外部变量,可以在文件开头声明,然后在文件的其他部分或另一个文件中定义。 在编写条件语句时,正确地比较不同类型的数据与“零值”是很关键的。例如,对于`bool`类型,可以直接用`if(flag)`来判断;对于`int`类型,应使用`if(0!=flag)`以避免赋值和比较混淆;对于指针,使用`if(NULL==flag)`;对于`float`类型,可能需要确保值在特定范围内,如`if((flag>=NORM)&&(flag<=NORM))`。注意,将"零值"放在比较运算符的左边可以捕获潜在的赋值错误,因为`=`会被编译器视为语法错误。 `sizeof`和`strlen`是两个常见的操作符和函数,它们有显著的不同。`sizeof`是一个操作符,可以在编译时计算出数据类型或变量的大小,包括数组的总字节数。而`strlen`是字符串处理库函数,用于计算以`\0`结束的字符串的实际长度,它在运行时执行。需要注意的是,当数组作为参数传递时,sizeof不会丢失数组的信息,而strlen会将其视为指针,仅计算首地址到结束符的长度。 在C语言中,`static`关键字用于创建局部静态变量(持续到程序结束)和外部静态变量(在文件作用域内可见,但限制了其作用域)。而在C++中,`static`还可以用于创建静态成员变量和静态成员函数,这些成员属于类而不是类的每个实例,允许在类的不同实例之间共享数据和行为。 理解和掌握这些面试题涉及的概念对于C和C++开发者来说是基础且关键的,它们涉及到程序的内存管理、条件判断的正确性、运行时和编译时的区别以及类的封装特性。深入理解这些知识点不仅有助于通过面试,还能提高编程效率和代码质量。