华为笔试题解析:局部变量与全局变量及C语言指针概念
需积分: 50 147 浏览量
更新于2024-09-08
收藏 77KB DOC 举报
本文档主要讨论了华为笔试中可能涉及的一些基础C语言概念,包括变量类型、作用域、全局变量与局部变量的关系以及编译器特性和错误处理。首先,对于变量的定义部分,列举了八种不同类型的变量:
1. 整形数(int)
2. 指向整形数的指针(int*)
3. 指向指针的指针,指向整形数(int**(或*(int*)))
4. 有10个整形数的数组(int[10])
5. 有10个指向整形数的指针数组(int* [10])
6. 指向10个整形数数组的指针(int(*)[10])
7. 指向接受一个整形参数并返回整形数的函数的指针(int (*)(int))
8. 有10个函数指针的数组,每个指针指向接受一个整形参数并返回整形的函数(int(*)[10])
接着,文章解释了`static`的关键字在C语言中的作用,它有两层含义:
- 当放在变量前时,`static`使得变量具有静态存储类别,只在首次初始化后保持其值,离开函数后不会自动清零。
- 当放在函数参数前时,表示函数内部的局部变量仅在其所在函数的一次调用中存在。
关于全局变量和静态全局变量的区别:
- 全局变量在整个程序范围内可见,如果没有`static`,在所有源文件中都是可用的。
- 静态全局变量(static global)的生命周期仅限于首次定义它的源文件,且在同一文件中的其他函数调用中保持其值,跨文件则不可见。
在面试中,可能会被问到关于命名冲突的问题,即局部变量可以和全局变量同名,但函数内部会优先使用同名的局部变量,除非明确使用`::`来指定全局范围。此外,文中还提到如何正确引用和处理全局变量,以及对`for(;1;)`、`do...while`和`while...do`循环的区别进行简要分析。
在代码示例部分,提到了三个函数`test1()`、`test2()`和`test3()`,展示了字符串操作的错误用法,如未初始化数组和指针,以及不正确的字符串复制方法。理解这些概念和错误是C语言编程面试中常见的考查点。
这份文档为准备华为笔试的人提供了关于C语言基础、变量管理和错误处理的重要知识点,帮助考生熟悉常见面试问题和编程技巧。
2011-09-21 上传
2008-09-24 上传
2010-05-14 上传
2023-08-03 上传
2008-10-19 上传
2010-04-06 上传
2022-06-11 上传
xiaohou11
- 粉丝: 0
- 资源: 3