华为软件笔试题解析:判断、填空与编程挑战
需积分: 3 39 浏览量
更新于2024-09-18
收藏 20KB DOCX 举报
"华为笔试题包含判断题、填空题和编程题,主要考察C语言基础知识,如数组、指针、运算符优先级、内存管理和函数参数传递等。"
在华为的笔试中,题目涵盖了C语言的基础和进阶概念,以下是这些知识点的详细解释:
1. **数组与指针**:
- 在数组定义inta[2][2]={{1},{2,3}}中,a[0][1]的值实际上是3,因为数组的初始化方式使得a[0][1]接续a[0][0]后面的值,即2之后是3,所以原题判断错误。
- int(*ptr)()表示ptr是一个指向函数的指针,而不是一维数组的名字。
2. **指针运算**:
- 指针可以进行比较运算(>,<,>=,<=,==),但不能直接进行算术运算,如加减法,除非它们指向同一个数组的元素或相邻元素。
3. **switch语句**:
- switch语句中的c可以是整型(int)、长整型(long)、字符型(char)和无符号整型(unsigned int),但不包括浮点型(float)。
4. **宏定义**:
- #defineprint(x)printf("the number, %d, is", x) 这个宏定义用于将数字x打印出来,注意宏替换不进行任何类型检查。
5. **大小与类型**:
- sizeof运算符返回变量或类型所占用的字节数,例如:char数组str占6个字节,指针p占4个字节,字符占1个字节,整型n占4个字节。
- 当数组作为函数参数传递时,它会退化为指针,因此在函数内部sizeof(str)返回的是指针的大小,即4个字节。
6. **动态内存分配**:
- voidgetmemory(char**p, int num)函数用于动态分配内存,然后通过指针p指向这块内存。在test函数中,str被初始化为NULL,调用getmemory后,str指向了大小为100的内存区域,然后复制字符串"hello"到这片内存,最后打印出"hello"。
7. **指针操作**:
- 对于*(ptr++)+=123,ptr先自增,然后对当前指针位置的值加123,所以ptr和*(ptr++)的结果都是8,因为原值为8的元素增加了123变为131,但ptr已经自增了。
- a++和++a的前置和后置运算符在不同上下文中有不同效果,导致了不同的输出结果。
8. **编程题**:
- 编写strcmp函数需要实现字符串比较功能,不使用库函数strcmp。这个函数需要逐字符比较直到遇到'\0'或者找到不匹配的字符,返回相应的比较结果。
以上就是华为笔试题中涉及的关键知识点,这些题目旨在测试考生对C语言基础的掌握程度,包括指针操作、数组、内存管理、运算符优先级、函数参数传递以及基本的数据类型理解。
508 浏览量
2011-05-24 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
Cyrnicolase
- 粉丝: 34
- 资源: 11
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍