C++面试必备:局部变量与全局变量、静态变量解析

需积分: 9 2 下载量 117 浏览量 更新于2024-07-27 收藏 124KB DOCX 举报
"C++面试题集锦,包括变量作用域、全局变量、循环结构、预处理及静态变量的深入理解" 在C++编程语言中,面试时常会涉及到一些基础但重要的概念,以下是对这些知识点的详细解释: 1. **变量作用域**: - 局部变量与全局变量:全局变量在整个程序中都是可见的,而局部变量只在其定义的函数或代码块内部可见。当局部变量与全局变量同名时,局部变量会屏蔽全局变量。如果要访问全局变量,可以使用作用域解析运算符`::`。 - `extern`关键字:用于在其他源文件中引用全局变量,表明变量已经在其他地方定义过。 2. **全局变量的声明**: - 可以在头文件中声明全局变量,但在多个源文件中定义时,必须有一个源文件以`static`修饰,以避免链接错误。`static`全局变量仅在定义它的源文件中可见。 3. **循环结构**: - `for(;1;)`与`while(1)`:两者等效,都是无限循环,因为条件始终为真。 - `do...while`与`while...do`的区别:前者先执行循环体,后检查条件;后者先检查条件,满足才执行循环体。这意味着`do...while`至少会执行一次循环。 4. **预处理指令**: 预处理指令通常以`#`开头,例如`#include`用于引入头文件,`#define`用于定义宏等。预处理发生在编译阶段,不会在运行时影响代码。 5. **静态变量**: - `static`全局变量:只在定义它的源文件中初始化并可见,不会被其他源文件访问,且其生命周期贯穿整个程序执行。 - `static`局部变量:仅在定义它的函数或代码块内可见,每次调用函数时,其值会保持上一次调用时的状态,不会重新初始化。 - `static`函数:函数的局部作用域,但其作用域限制在定义它的源文件内,不会在其他源文件中可见。这常用于实现私有函数或避免命名冲突。 对于给出的代码示例: ```cpp #include main() { int a, b, c, d; a = 10; b = a++; c = ++a; d = 10 * a++; printf("b,c,d:%d,%d,%d", b, c, d); return 0; } ``` 输出结果为:`b,c,d:10,12,120`。这里涉及到了自增运算符`++`的优先级和结合性。`b`保存了`a`自增前的值10,`c`保存了`a`自增后的值12,`d`的计算中,`a`再次自增但不影响乘法结果,所以`d`为120。 以上知识点是C++面试中常见的基础部分,理解和掌握这些内容对程序员在面试中表现优秀至关重要。