华为笔试题解析:局部变量与全局变量及C语言指针概念

需积分: 50 6 下载量 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语言基础、变量管理和错误处理的重要知识点,帮助考生熟悉常见面试问题和编程技巧。