C/C++面试必备:变量声明与定义、条件判断、sizeof与strlen、static关键字解析

需积分: 43 2 下载量 152 浏览量 更新于2024-07-23 收藏 532KB PDF 举报
“这是一份关于C和C++面试题的集合,主要涵盖了变量声明与定义的区别、不同类型数据与零值比较的if语句、sizeof和strlen的区别以及C和C++中关键字static的不同用法。” 在C和C++编程中,理解和掌握这些基本概念对于面试和实际开发至关重要。 1. 变量的声明与定义: - 声明变量主要是告诉编译器变量的名称、类型和作用域,但并不分配存储空间。例如,`extern int x;` 只是声明了变量x,而未分配内存。 - 定义变量则是在内存中为变量分配空间并初始化,例如,`int x = 10;` 这既是声明也是定义。 - 多次声明同一个变量是允许的,但多次定义是非法的。如果在多个文件中使用同一个变量,通常会在一个文件中定义,在其他文件中使用extern声明。 2. 数据与零值比较的if语句: - 对于bool型,直接使用 `if(flag)` 即可。 - 对于int型,使用 `if(0 != flag)` 避免将"="误写成"=="。 - 对于指针型,使用 `if(NULL == flag)`,同样是为了防止混淆赋值和比较。 - 对于float型,应确保比较范围,例如 `(flag >= NORM) && (flag <= NORM)`。 3. sizeof与strlen的区别: - sizeof是编译时操作符,返回变量或类型的大小,如 `sizeof(int)` 或 `sizeof(array)`。 - strlen是运行时函数,用于计算以'\0'结尾的字符串的长度,如 `strlen("hello")`。 - sizeof对数组不退化,始终返回数组的总字节数,而strlen接收的是字符指针,无法获取原始数组信息。 4. 关键字static的差异: - 在C中,static用于创建静态局部变量(仅在函数内部初始化一次,保留其状态),静态外部变量(限制变量的作用域在当前文件)和静态函数(限制函数的可见性在当前文件)。 - 在C++中,static增加了静态成员变量(属于类而非特定对象,所有对象共享)和静态成员函数(不依赖于对象实例,可以直接通过类名调用)的功能。这使得静态成员可以作为类级别的变量和方法,而非特定对象的属性。 掌握这些基本概念对于编写高效、可靠的C和C++代码至关重要,它们也是面试中常见的考点。深入理解这些知识点不仅能帮助你在面试中脱颖而出,还能在实际编程中避免许多常见错误。