C语言面试必备:华为面试题解析

需积分: 13 3 下载量 113 浏览量 更新于2024-07-30 2 收藏 424KB PDF 举报
"C语言面试题题库,包含华为面试题,涉及C语言的基础知识、变量作用域、全局变量和局部变量的使用、预编译处理及static关键字的应用等" 在C语言面试中,理解变量的作用域、全局变量与局部变量的交互、以及static关键字的用法是非常重要的知识点。下面是对这些内容的详细解释: 1. 局部变量与全局变量重名: 当局部变量和全局变量重名时,局部变量会屏蔽全局变量。在函数内部,访问到的是同名的局部变量,而非全局变量。如果需要在函数内部使用全局变量,可以使用全局作用域运算符`::`来显式引用。 2. 引用全局变量: 全局变量可以通过`extern`关键字在其他文件中引用。头文件中的全局变量声明通常用来在多个文件间共享,但要避免重复初始化。如果全局变量在头文件中声明并初始化,所有包含该头文件的文件都会有一份副本,可能会导致链接错误。如果只是声明,使用`extern`在其他文件中引用,就不会有这个问题。 3. 全局变量在头文件中的使用: 全局变量可以定义在头文件中,但为了避免命名冲突,可以使用`static`修饰,使其成为静态全局变量,这样每个包含该头文件的源文件都有自己的独立副本,不会互相干扰。 4. 代码输出: 下列代码的输出是`b, c, d: 10, 12, 120`。这是因为`a++`先使用然后加1,所以`b`的值为10;`++a`则是先加1再使用,所以`c`的值为12;而`10*a++`计算时`a`还是12,之后再加1,所以`d`的值为120。 5. `static`关键字的区别: - 静态全局变量(static全局变量)仅在其定义的源文件内可见,不会被其他文件访问,增加了变量的作用域限制,减少了命名冲突的可能性。 - 静态局部变量(static局部变量)在函数调用结束后不会被销毁,而是保持上一次调用时的值,直到程序结束或再次调用该函数时才会被重新赋值。 - 静态函数(static函数)的可见性也被限制在其定义的源文件内,其他文件无法直接调用,常用于实现模块内部的私有函数,提高代码封装性。 了解并掌握这些知识点对于C语言的面试和学习至关重要,它们涵盖了变量的生命周期、作用域和内存管理等方面,这些都是编写高效、可靠C程序的基础。