C语言经典面试题解析

需积分: 12 4 下载量 65 浏览量 更新于2024-07-31 收藏 686KB PDF 举报
“C语言经典面试题合集,包含局部变量与全局变量的关系、全局变量的声明、无限循环、do...while与while...do的区别以及static的多种用途等核心概念。” 在C语言编程中,面试题常常围绕基础概念、语法特性以及最佳实践进行。以下是对这些知识点的详细解释: 1. 局部变量与全局变量: 当局部变量与全局变量同名时,局部变量会屏蔽全局变量。这意味着在函数内部,当你引用这个变量时,实际使用的是局部变量。例如,如果在循环体内定义了一个与全局变量同名的局部变量,那么在循环体内,这个局部变量将覆盖全局变量的作用。编译器会优先考虑局部作用域内的变量。 2. 引用全局变量: 可以通过`extern`关键字在当前文件中声明全局变量。这告诉编译器该变量在其他地方已经定义。如果通过头文件引入全局变量,编译器会在编译阶段检查变量声明,而链接器会在链接阶段检查变量定义,确保所有引用都有正确的定义。 3. 全局变量在头文件中的使用: 全局变量可以放在被多个C源文件包含的头文件中。但是,为了避免重复定义的问题,应使用`static`修饰全局变量,使其成为局部作用域的全局变量,只能在声明它的文件中使用。 4. 无限循环: `for(;1;;)`和`while(1)`都是表示无限循环,因为条件始终为真,所以循环会一直执行下去,除非有明确的退出机制。 5. do...while与while...do的区别: `do...while`循环先执行一次循环体,然后检查条件是否满足,如果满足则继续执行,否则退出循环。而`while...do`是先检查条件,满足才执行循环体,因此`do...while`至少会执行一次。 6. 代码分析: 下列代码展示了自增运算符`++`的使用,以及静态变量`static`的概念: ```c int main(void) { int a, b, c, d; a = 10; b = a++; // b=10, a=11 c = ++a; // c=12, a=12 d = 10 * a++; // d=120, a=13 printf("b,c,d:%d,%d,%d", b, c, d); return 0; } ``` 输出为:`b,c,d:10,12,120` 7. static的用途: - 在函数内部,声明为静态的变量(static int var)仅在首次调用时初始化,并在后续调用中保留其上次调用结束时的值,实现了跨函数调用的持久化状态。 - 在模块(文件)级别,静态变量(static int var)使得变量只对当前模块可见,对外不可见,起到了一种封装的作用。 - 在函数定义上,声明为静态的函数(static void func())限制了函数的访问范围,使其只能在定义它的模块内部被调用,增强了代码的封装性。 以上就是C语言面试中常考的一些核心知识点,理解和掌握这些内容对提升C语言编程技能和面试表现至关重要。