C/C++面试深度解析:经典问题解答

需积分: 43 3 下载量 46 浏览量 更新于2024-07-28 收藏 532KB PDF 举报
“50个C、C++面试题,涵盖了变量声明与定义的区别、数据类型与零值比较、sizeof和strlen的区别以及C和C++中static关键字的不同用途。” 在C和C++编程语言中,面试题往往侧重于基础概念、语法细节以及高级特性。以下是对这些面试题的详细解析: 面试题1:理解变量的声明和定义 声明变量告诉编译器变量的存在和类型,但并不分配内存空间。例如,`extern int x;`就是一个声明,它告诉编译器有一个名为x的整型变量,但并未实际分配内存。定义则是为变量分配内存并初始化,如`int x = 5;`。一个变量只能被定义一次,但可以在程序的不同位置声明多次。 面试题2:与零值比较的if语句 在C/C++中,比较运算符的使用需要谨慎。对于bool型,直接使用`if(flag)`即可,因为bool值非零即真。对于int型,推荐使用`if(0 != flag)`,防止将`=`误写为`==`。指针变量与NULL比较时,应写为`if(NULL == flag)`,同样是为了防止误写。对于float型,需确保比较值在特定范围内,如`if((flag >= NORM) && (flag <= NORM))`,以避免浮点数比较中的误差。 面试题3:sizeof和strlen的区别 sizeof是一个操作符,它在编译时计算出表达式或类型的大小,如`sizeof(int)`。而strlen是一个函数,用于计算以'\0'结尾的字符串的实际长度,如`strlen("hello")`。sizeof可以用于任何类型,包括数组,而strlen仅适用于字符串。当数组作为sizeof的参数时,它会返回整个数组的大小,而作为strlen的参数(实际是其首地址),它只会计算字符串的长度。 面试题4:C和C++中static关键字的差异 在C中,static用于创建局部静态变量(在函数内部,生命周期跨越函数调用)和外部静态变量(在文件作用域,对其他文件不可见)。而在C++中,static还可以用于创建类的静态成员变量和函数,这些成员对所有对象实例共享,而不是每个对象实例都有独立的一份。静态成员变量可以通过类名直接访问,而静态成员函数没有隐含的this指针,因此不能访问非静态成员。 这些面试题揭示了C和C++语言的核心概念,包括变量管理、比较操作、类型大小计算以及作用域和存储持续性。熟练掌握这些知识点对于成为一名合格的C/C++程序员至关重要。在实际编程中,正确理解和使用这些特性可以避免许多常见错误,提高代码质量和可维护性。