华为面试技巧:全局与局部变量、static的深度解析
需积分: 10 151 浏览量
更新于2024-07-24
收藏 211KB DOC 举报
"华为技术面试题"
在华为的面试中,技术方面的问题涵盖了许多编程基础知识,包括变量的作用域、引用全局变量的方式、全局变量在多文件中的使用,以及静态变量和普通变量的区别。以下是这些知识点的详细解释:
1. 局部变量与全局变量重名:
在函数内部定义的变量称为局部变量,它只在该函数的作用域内有效。如果全局变量和局部变量同名,那么在函数内部,局部变量会遮蔽全局变量。要访问全局变量,需要使用作用域解析运算符 "::"。
2. 引用全局变量的方法:
要引用已定义的全局变量,通常有两种方式。一是通过包含包含该全局变量声明的头文件,这样在编译时会进行链接;二是使用 `extern` 关键字声明全局变量,这种方式在编译时不进行链接,而是在链接阶段寻找全局变量的定义。如果使用 `extern` 错误地引用了一个未定义的变量,编译期间不会报错,但链接时会出错。
3. 全局变量在头文件中的使用:
全局变量可以在头文件中定义,并在多个 `.C` 文件中被包含。但是,为了防止命名冲突,可以使用 `static` 关键字声明全局变量,使其在每个包含该头文件的 `.C` 文件中都是独立的,即每个 `.C` 文件都有一个独立的同名全局变量实例。
4. 代码输出分析:
下面的代码展示了预自增和自增操作的差异:
```c
int main(void) {
int a, b, c, d;
a = 10;
b = a++; // 先赋值,后自增,b = 10
c = ++a; // 先自增,后赋值,c = 11
d = 10 * a++; // 先计算表达式(d = 10 * 11),后自增,d = 110
printf("b,c,d:%d,%d,%d", b, c, d);
return 0;
}
```
代码的输出是:`b,c,d:10,11,110`
5. 静态变量与普通变量的区别:
- **静态全局变量**:与普通全局变量相比,它们的作用域仅限于定义它们的源文件内。这意味着其他源文件无法访问这些静态全局变量,减少了命名冲突的风险。
- **静态局部变量**:与普通局部变量相比,它们的生命周期贯穿整个程序运行期间,而不是只在函数调用时存在。每次函数调用时,静态局部变量保留其上次调用结束时的值。这意味着它们在函数多次调用之间保持状态。
- **静态函数**:静态函数的链接特性与静态全局变量类似,它们仅在定义的源文件内可见,不能被其他源文件直接调用。这增加了代码的封装性,避免了函数名的冲突。
理解这些基本概念对程序员,尤其是面试者来说至关重要,因为它们是任何编程语言的基础,也是编写可靠、高效代码的关键。在面试中,能够清晰地解释这些概念并应用到实际问题中,将有助于展示你的技术水平和解决问题的能力。
2020-03-13 上传
2023-08-27 上传
2023-10-26 上传
2024-01-05 上传
2024-08-15 上传
2023-09-17 上传
2023-06-23 上传
I594051947
- 粉丝: 0
- 资源: 3
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦