华为C语言面试精华:全局变量与局部陷阱解析

需积分: 10 19 下载量 174 浏览量 更新于2024-09-19 1 收藏 32KB DOC 举报
本文主要探讨了华为在C语言面试中可能涉及的一些关键知识点。首先,关于变量命名,局部变量确实可以与全局变量同名,但局部变量优先级更高,函数内部引用时会优先使用局部变量,除非明确使用"::"操作符来指定全局变量。引用全局变量时,可以使用`extern`关键字,如果在头文件中声明错误,编译阶段可能会报错,而`extern`则会在链接阶段发现错误。 其次,讨论了全局变量的定义和多源文件的问题。在不同的C源文件中,可以通过`static`关键字声明同名全局变量,但只有一个文件可以对其进行初始化,这样可以避免链接时的冲突。`static`全局变量的作用域仅限于定义它的源文件,这有助于控制变量的可见性和减少潜在的错误。 接下来,针对常见的循环结构,文章提到了`for(;1;)`和`while(1)`的等效性,以及`do...while`和`while...do`的区别,前者先执行一次循环再进行条件判断,后者则是先判断条件再执行循环。 然后,给出了一段示例代码,展示了如何声明和使用全局变量,以及局部变量对全局变量的影响,特别是通过`printf`输出变量值的部分。最后,文章详细比较了`static`全局变量、局部变量和普通变量的区别,包括存储方式、作用域和函数内的可见性。`static`变量在特定范围内提供更强的控制,防止跨文件的意外交互。 这篇文章涵盖了C语言编程中基础概念的面试常见题型,重点强调了变量的作用域、声明方式和循环结构的理解,对于准备华为或者其他公司C语言面试的学生或开发者来说,具有实用价值。