华为2010年面试题集锦:C语言挑战与基础概念
需积分: 9 184 浏览量
更新于2024-10-21
收藏 2KB TXT 举报
本资源是一份关于2010年华为面试题目的整理,主要涉及C语言编程方面的基础概念和技能测试。以下是其中的十个问题及其详细解析:
1. **宏定义与运算**: 题目Y(n)的计算涉及到嵌套的宏定义,表达式(N+1)*n。当n=5+1时,计算结果为6*6,即36,但选项中没有36,最接近的是C选项26,因为可能是编译器对整数溢出的处理导致的结果。
2. **枚举类型**: 定义了一个枚举类型ENUM_A,包含了若干成员,Z1-5表示从Z1到Z5的连续值,题目要求计算最后一个成员的值,应该是Z5,但这里可能有遗漏或错误,因为实际答案应为6(在C语言中,枚举的下标从0开始)。
3. **指针内存分配和大小**: `void *p = malloc(100)`,`sizeof(p)`通常返回指针类型的大小,通常是4字节(对于32位系统),因此选择B选项4。
4. **数组和指针操作**: `inta[9]; p = a;`之后,通过指针访问数组元素,`a[1]`的地址是`a`加上一个元素的大小,即`a + sizeof(int)`,所以`p+1`是正确的,选A。
5. **指针算术和数组操作**: 对于`unsigned long`类型的数组,通过指针`pulPtr`操作,`*(pulPtr+2)`访问的是数组中的第三个元素,加2后输出值为`10`,所以原始值加2后为`12`,最终输出为`10,12`,选D。
6. **字符数组和指针运算**: `char szStr[]="abcde"`,`szStr+=2`实际上是将指针向后移动两个位置,不会改变字符串内容,`printf`输出的是移动后的指针指向的地址的无符号整数值,即`7`(从0开始计数),选D。
7. **字符数组比较**: `char X[]`和`char Y[]`分别初始化,虽然长度相同,但内容不同,它们不是等价的,所以选B,表示不相等且内容不同。
8. **联合体与数据转换**: 通过`union`结构,将两个整数存储在`char`类型的数组中,输出`a.k`,由于`0x39`和`0x38`合并后按字节存储,输出的十六进制值为`3839`,选A。
9. **联合体的内存占用**: `union tagAAAA`结构包含不同类型的数据,实际存储时占用的内存取决于最大成员的大小。`half_a`部分占4个字节(2个`char`),`l1`占4个字节,总和8字节,选C。
10. **面试题目的目的**: 题目最后是对面试题目的总体评价或讨论,选项A表示“函数指针和结构体指针的区别”,符合对面试题目的深入理解,其他选项可能不够全面或者与题目主旨不符。
这些题目涵盖了C语言的基本语法、指针、数据结构和内存管理等方面,适合用来评估应聘者的编程基础和理解能力。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2012-11-17 上传
2010-08-04 上传
2008-11-04 上传
2009-02-17 上传
2010-08-08 上传
2010-03-09 上传