华为软件笔试题解析:判断、填空与编程挑战
下载需积分: 3 | DOCX格式 | 20KB |
更新于2024-09-18
| 6 浏览量 | 举报
"华为笔试题包含判断题、填空题和编程题,主要考察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语言基础的掌握程度,包括指针操作、数组、内存管理、运算符优先级、函数参数传递以及基本的数据类型理解。
相关推荐
8 浏览量
Cyrnicolase
- 粉丝: 34
- 资源: 11
最新资源
- 计算机操作系统课后答案(西安电子科技大学版)
- 通用变频器应用技术.pdf
- 《开源》旗舰电子杂志2008年第4期
- C# 语言的微软官方说明书(权威)
- usb2.0协议 中文版
- 《开源》旗舰电子杂志2008年第3期
- 思科2950CR官方配置命令手册.pdf
- ABB ACS510_01 用户手册中文版
- 打造linux完美桌面
- STC单片机内部资源经典应用大全.PDF
- 进行空间,你的网站及域名的备案详细步骤
- Packt.Publishing.Learn.OpenOffice.org.Spreadsheet.Macro.Programming.Dec.2006.pdf
- 虚拟硬盘系统的实现及应用
- JasperReport3
- C/C++面试大全--算法和知识点详析
- DIV+CSS布局大全