C/C++面试精华:变量声明、比较、sizeof与strlen、static解析

需积分: 15 4 下载量 41 浏览量 更新于2024-07-06 1 收藏 804KB PDF 举报
"50个C语言C++常见面试题及答案.pdf" 本文将深入探讨C语言和C++中的一些核心概念,通过四个常见的面试问题来解析这些知识点。 面试题1涉及变量的声明与定义。在C/C++中,声明(declaration)主要用于告知编译器变量的类型和名称,而不分配内存空间。而定义(definition)则是实际为变量分配内存并初始化的过程。例如,一个变量可以在头文件中声明,然后在源文件中定义,这样就可以在多个源文件之间共享。extern关键字用于声明一个变量在其他地方已定义,但并不分配新的内存。 面试题2讨论了不同数据类型的条件判断。在bool型中,可以直接用flag作为条件,因为非零值被视为true,零值被视为false。对于int型,为了避免赋值操作符误写为比较操作符,推荐使用`0!=flag`。指针变量与NULL的比较也是同样的道理,应当将NULL放在左边。对于float型,需要确保数值在特定范围内,通常会用到浮点数的正常值(NORM)。 面试题3比较了sizeof和strlen的功能。sizeof是编译时操作符,返回一个类型或变量所占用的内存字节数,而strlen是运行时函数,用于计算以'\0'结束的字符串的长度。sizeof可以用于数组,即使在数组作为参数时也不会退化为指针,而strlen接收的是字符串指针。 面试题4提到了static关键字在C和C++中的差异。在C语言中,static用于创建静态局部变量(其生命周期贯穿整个程序执行,而非仅限于函数调用),静态外部变量(限制变量的作用域,只在其定义的源文件内可见),以及静态函数(不允许被其他文件链接)。而在C++中,static关键字还可以用于创建类的静态成员变量和函数,这些成员对所有类的对象来说是共享的,不受对象实例的影响。 总结这些面试题,我们可以看到C/C++语言中的基本元素,如变量声明与定义、数据类型比较、内存管理操作符和关键字的作用。掌握这些基础知识对于理解和编写高效、可靠的C/C++代码至关重要。在面试中,理解并能正确应用这些概念不仅展示了扎实的编程功底,也能体现对程序设计原则的理解和尊重。