C语言面试精华:全局变量、局部重名与引用技巧

需积分: 10 10 下载量 145 浏览量 更新于2024-07-27 收藏 1.34MB PDF 举报
本文档主要涵盖了C语言面试中常见的基础和进阶问题,帮助面试者巩固对C语言的理解。以下是对这些问题的详细解析: 1. 局部变量与全局变量重名:C语言中,局部变量和全局变量可以同名,但是局部变量的作用域仅限于所在的函数或代码块。当在函数内部引用同名的变量时,编译器优先使用局部变量,若需要全局变量,需使用作用域解析运算符"::"明确指出。 2. 引用全局变量:使用"extern"关键字可以引用已经定义的全局变量。通过包含头文件的方式引用时,编译阶段会检查变量是否存在;如果直接用extern,编译阶段不会报错,链接阶段会确保变量已存在。 3. 全局变量在头文件中的使用:全局变量可以声明在可被多个C文件包含的头文件中,但建议使用"static"修饰以避免链接时可能出现的问题。通常,只有一个C文件应给全局变量分配初始值。 4. 无限循环:语句"for(;1;;)"创建了一个无限循环,与"while(1)"效果相同,循环条件始终为真,导致程序进入死循环。 5. do-while与while-do的区别:do-while循环先执行一次循环体,然后根据条件判断是否继续;而while-do则是在判断后执行循环体,可能会导致一次空循环。 6. C代码输出分析:给出的代码示例中,变量a、b、c和d的值依次是10、10(因为a自增操作在赋值之后)、12(a再次自增)和120(a乘以10后a自增),最后输出结果为b,c,d:10,12,120。 7. "static"的作用: - 函数内的静态变量:初始化仅执行一次,且值保持不变。 - 模块级别的静态变量:限制在模块内可见,防止与其他模块冲突,提供私有全局变量的效果。 - 静态函数:限定在声明模块范围内使用,不被外部模块引用。 8. 引用与指针的区别: - 初始化:引用必须在声明时立即初始化,而指针可以不初始化。 - 可变性:引用一旦初始化后不能改变指向的对象,而指针可以改变所指向的对象。 - 语法:引用使用&符号获取地址,而指针使用*解引用访问值。 掌握这些知识点对理解和解决C语言编程中的实际问题至关重要,对于准备C语言面试的人来说,熟悉并能灵活运用这些概念是提升竞争力的关键。