华为面试题解析:局部变量与全局变量

需积分: 10 3 下载量 139 浏览量 更新于2024-09-18 收藏 48KB DOC 举报
"这篇资源是关于09年华为面试题目的总结,主要涉及C语言编程相关的知识点,包括局部变量与全局变量的关系、全局变量的声明与使用、循环结构的差异、以及static关键字在变量和函数中的应用等。" 在软件开发领域,尤其是在面试环节,对这些基础概念的理解和运用能力是评估开发者技能的重要标准。让我们逐一深入探讨这些面试题目所涵盖的知识点: 1. **局部变量与全局变量**:在C语言中,局部变量和全局变量可以同名。在函数内部声明的同名局部变量会遮蔽全局变量。若需访问全局变量,需使用`::`运算符。局部变量的作用域仅限于声明它的函数或代码块,而全局变量在整个源文件或项目中都可见。 2. **引用全局变量**:使用`extern`关键字可以引用已定义的全局变量。通过包含包含全局变量声明的头文件也是一种方法,但这可能导致链接时的错误,如果变量名称拼写不正确。 3. **全局变量的声明**:全局变量可以定义在头文件中,但应谨慎处理,以免引起命名冲突。可以通过在每个C文件中以`static`声明同名全局变量,这样每个文件都有自己的独立变量实例,避免了连接时的冲突。 4. **循环结构的区别**: - `for(;1;)`与`while(1)`:这两种循环结构本质上等价,都会形成无限循环,直到遇到`break`语句。 - `do...while`与`while...do`:两者的主要区别在于判断条件的位置。`do...while`先执行一次循环体,然后检查条件;而`while...do`先检查条件,满足时才执行循环体。 5. **代码输出分析**: ``` int a, b, c, d; a = 10; b = a++; // b = 10 c = ++a; // a = 11, c = 11 d = 10 * a++; // a = 12, d = 120 printf("b, c, d: %d, %d, %d", b, c, d); ``` 这段代码的输出是`b, c, d: 10, 11, 120`。这里涉及到自增操作符`++`和后置自增`++a`的异同,它们在计算顺序上的差异导致了结果的不同。 6. **static关键字的应用**: - `static`全局变量:仅在其定义的源文件内可见,限制了其作用域,避免了不同文件间的命名冲突。 - `static`局部变量:在函数调用间保持其值,即具有持久性,每次调用函数时不会重新初始化。 - `static`函数:这类函数的链接属性为内部(internal linkage),意味着它不能被其他源文件直接调用,提高了代码的封装性。 面试时,对这些基础知识的掌握程度通常反映了候选人的基本功是否扎实,以及他们在实际编程中解决问题的能力。理解并熟练运用这些概念,不仅有助于通过面试,更能提升在软件开发中的专业素养。