C语言面试深度解析:局部与全局变量、循环与静态存储

需积分: 0 4 下载量 99 浏览量 更新于2024-12-04 收藏 56KB DOC 举报
"这篇资源包含了华为公司在面试C语言开发者时可能会问到的问题,涉及局部变量与全局变量的使用、全局变量的声明与初始化、循环结构的差异、以及静态变量和普通变量的区别。" 1. 局部变量与全局变量: - 当局部变量与全局变量重名时,局部变量会在其作用域内屏蔽全局变量。如果需要访问全局变量,需要使用作用域解析运算符`::`。 - 在同一个函数内,可以多次定义同名的局部变量,它们的作用域仅限于各自的代码块。 2. 引用全局变量: - 可以通过`extern`关键字引用全局变量,或者在头文件中声明并包含头文件。如果在头文件中直接定义全局变量,并在多个.C文件中包含,可能需要使用`static`修饰来限制其作用域,避免链接冲突。 3. 全局变量的静态存储: - 全局变量默认具有静态存储类型,其生命周期贯穿整个程序运行。静态全局变量只在其定义的源文件内可见,提供了一种限制全局变量作用域的方法。 4. 循环结构: - `for(;1;)`等同于`while(1)`,表示无限循环,因为条件始终为真。 - `do...while`和`while...do`的区别在于,前者先执行一次循环体再检查条件,后者先检查条件再决定是否执行循环体。 5. 静态变量: - 静态局部变量在函数调用结束后不会被销毁,其值在下次调用时会保留。这与普通局部变量(自动变量)每次调用时初始化为默认值或指定值不同。 - 静态全局变量仅在定义它的源文件内可见,不同于普通全局变量在整个程序中可见。 - 静态函数意味着函数的符号不被导出,只在当前源文件中可用,增加了封装性,避免了命名冲突。 6. C语言代码示例输出: - 这段代码展示了预自增和后自增的操作。变量`a`初始化为10,`b`获取`a`的当前值10,然后`a`自增变为11;`c`获取自增后的`a`值11,接着`a`再次自增变为12;`d`则等于10乘以自增后的`a`,即120。所以输出为`b,c,d:10,11,120`。 这些面试题和答案揭示了C语言中的基本概念和细节,对理解C语言的内存管理、变量作用域、循环控制和存储类别等方面至关重要。对于准备华为面试的求职者来说,熟悉这些知识点能够提高面试成功的可能性。