C语言面试技巧:华为面试常见问题解析

需积分: 32 24 下载量 30 浏览量 更新于2024-10-19 4 收藏 56KB DOC 举报
"这篇内容是关于C语言面试题的总结,特别聚焦于华为的面试场景。涵盖的问题包括但不限于变量的作用域、全局变量的使用、循环结构的理解以及static关键字的应用。" 1. 局部变量与全局变量:在C语言中,局部变量可以在函数内部定义,与全局变量同名。在这种情况下,局部变量会遮蔽全局变量,即在函数内部访问的实际上是局部变量。如果要在函数内部访问全局变量,需要使用作用域解析运算符`::`。 2. 引用全局变量:可以通过在源文件中包含相应的头文件来引用全局变量,或者使用`extern`关键字在需要的地方声明全局变量。使用头文件的方式在编译阶段就能检测到错误,而`extern`方式的错误会在链接阶段暴露。 3. 全局变量在头文件中的声明:全局变量可以在被多个.C文件包含的头文件中定义,但为了避免命名冲突,通常建议使用`static`修饰,这样每个.C文件中的同名全局变量只在其自身文件作用域内有效。 4. `for(;1;)`和`while(1)`: 这两种循环结构本质上是等价的,都会形成无限循环,因为条件始终为真。 5. `do...while`与`while...do`的区别:`do...while`循环先执行一次循环体,然后再检查条件,即使条件不满足也会执行至少一次。而`while...do`则是先检查条件,条件满足才执行循环体,所以可能会一次都不执行。 6. 代码输出:这段代码涉及到自增操作(`++`)的顺序问题。`a=10; b=a++;`这里的`b`会被赋值为10,然后`a`自加1变为11。`c=++a;`这里`a`先自加1变为12,再赋值给`c`。最后`d=10*a++;`计算时`a`为12,计算结果为120,然后`a`自加1变为13。因此,输出为`b,c,d:10,12,120`。 7. `static`关键字的用法: - static全局变量:只在其定义的源文件内可见,限制了其作用域,不同于常规全局变量在整个程序中可见。 - static局部变量:在函数内部持续存在,不会在每次函数调用时重新初始化,而是保持上次调用时的值。这与普通局部变量只在函数调用期间存在并销毁有显著区别。 - static函数:函数的可见性仅限于定义它的源文件,不能被其他文件直接调用,增加了封装性,避免了名字冲突。 这些面试题涵盖了C语言的基础语法、变量管理、控制结构和`static`关键字的深入理解,对于准备华为或者其他公司的C语言面试非常有帮助。