华为面试C语言题解析

需积分: 10 5 下载量 105 浏览量 更新于2024-10-21 收藏 83KB DOC 举报
"华为面试题及答案之C语言篇.doc" 这篇文档主要涵盖了C语言的一些面试题目及其答案,适合准备华为面试或对C语言学习感兴趣的同学。以下是对这些知识点的详细解释: 1. 局部变量与全局变量重名:在C语言中,局部变量和全局变量可以同名。在函数内部定义的局部变量会遮蔽同名的全局变量。如果要在函数内部使用全局变量,需要使用作用域解析运算符`::`来明确指定。 2. 引用全局变量:要引用已定义的全局变量,可以在当前作用域中使用`extern`关键字。如果通过包含头文件引用,编译时就会检查变量是否存在;若使用`extern`声明,编译时不会检查,而是在链接阶段检查。 3. 全局变量在头文件中的声明:全局变量可以放在被多个.C文件包含的头文件中。但为了避免命名冲突,通常使用`static`修饰,使其成为静态全局变量,限制其作用域仅限于当前源文件。 4. `for(;1;)`和`while(1)`:这两个循环结构等价,都会无限循环,因为它们的条件始终为真。 5. `do...while`与`while...do`的区别:`do...while`循环先执行一次循环体,然后检查条件是否满足,如果不满足则停止;`while...do`则是先检查条件,满足才执行循环体,所以`do...while`至少会执行一次。 6. 代码输出内容:这段代码涉及预自增和后自增操作。`a=10; b=a++;`这行执行后,`b`等于10,`a`等于11。`c=++a;`这行执行后,`a`被先自增为12,然后赋值给`c`,所以`c`也是12。`d=10*a++;`这行中,`a`先自增为13,但表达式计算时使用的是自增前的值12,因此`d`等于120。最后的输出是`b, c, d: 10, 12, 120`。 7. `static`修饰符的差异: - 静态全局变量(static全局变量):仅在其定义的源文件内可见,提供了一种限制全局变量作用域的方法,避免了不同源文件间的命名冲突。 - 静态局部变量(static局部变量):在函数调用结束时不被销毁,而是保持其上次调用时的值。下次再次调用该函数时,会继续使用该值,相当于为局部变量提供了持久化的存储。 - 静态函数(static函数):函数的作用域仅限于定义它的源文件,其他源文件不能直接访问。这有助于封装和防止名字冲突,提高代码模块化。 以上就是文档中所涵盖的C语言知识要点,这些知识点对于理解和使用C语言以及应对相关面试至关重要。