C语言面试精华:局部与全局变量、static的奥秘
需积分: 7 52 浏览量
更新于2024-07-26
3
收藏 242KB DOC 举报
"C语言经典面试题集合,涵盖了华为等公司常见的面试问题,涉及局部变量与全局变量的使用、全局变量的声明与初始化、以及static修饰的变量和函数的区别。"
1. 局部变量与全局变量重名:
在C语言中,如果局部变量与全局变量同名,局部变量会在其作用域内屏蔽全局变量。这意味着在函数内部,当你使用同名变量时,实际使用的是局部变量。如果要访问全局变量,需要使用作用域解析运算符`::`。
2. 引用全局变量:
引用已定义的全局变量有两种方式:一是通过包含包含该变量声明的头文件;二是使用`extern`关键字。包含头文件的方式在编译时检查变量是否存在,如果头文件编写错误,编译阶段就会报错。而使用`extern`声明时,如果变量未被正确声明,错误将在链接阶段出现。
3. 全局变量在头文件中的使用:
全局变量可以定义在头文件中,并在多个.C文件中包含。但是,为了避免命名冲突和链接错误,其中一个文件应该对全局变量进行初始化,其他文件则使用`extern`声明但不初始化。
4. 代码输出分析:
```c
#include<stdio.h>
int main(void)
{
int a, b, c, d;
a = 10;
b = a++; // b = 10
c = ++a; // a = 11, c = 11
d = 10 * a++; // a = 12, d = 120
printf("b,c,d:%d,%d,%d", b, c, d);
return 0;
}
```
这段代码的输出将是:`b,c,d:10,11,120`
5. `static`修饰的变量和函数的区别:
- 静态全局变量(static全局变量)仅在其定义的源文件内可见,不允许其他源文件访问,这增加了变量的作用域限制,减少了命名冲突的可能性。
- 静态局部变量(static局部变量)在函数调用结束后不会被销毁,下次调用时仍保留上次的值,其生命周期贯穿整个程序运行时间,不同于普通局部变量每次调用都会初始化。
- 静态函数(static函数)的可见性也仅限于定义它的源文件,不允许其他文件直接调用,起到了封装的作用,增加了代码的安全性和模块化。
了解这些知识点对于理解和解答C语言面试题至关重要,特别是关于变量的作用域、存储类别以及`static`关键字的使用。掌握这些可以帮助开发者写出更安全、更高效且易于维护的C语言代码。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2009-09-27 上传
2023-05-23 上传
点击了解资源详情
点击了解资源详情