华为软件笔试题解析:判断、填空与编程挑战
4星 · 超过85%的资源 需积分: 0 50 浏览量
更新于2024-07-28
收藏 201KB DOC 举报
"华为软件工程师笔试题"
华为软件工程师的笔试题目涵盖了C/C++语言的基础知识,包括数组、指针、运算符、数据类型、预处理指令以及字符串处理等多个方面。以下是对这些知识点的详细解释:
1. **数组与初始化**:
在C/C++中,数组初始化可以有不同的形式。题目中的`inta[2][2]={{1},{2,3}};`创建了一个2x2的二维数组。这里,`a[0][1]`的值为3,而不是0,因为数组元素按照顺序填充。
2. **指针与一维数组**:
`int(*ptr)()`定义的是一个指向函数的指针,而非一维数组的名字。如果要声明一个一维数组的指针,应写作`int *ptr`。
3. **指针运算**:
指针在适当条件下可以进行比较运算,如>`<`,`>=`,`<=`, `==`。但需要注意,不同类型的指针之间的比较通常没有意义,除非它们指向同一数组或同一对象。
4. **switch语句**:
在C/C++中,`switch`语句的`case`标签可以是整型、字符型(`char`)、枚举类型(`enum`)或者无符号整型(`unsigned int`),但不包括`float`类型。
5. **宏定义**:
题目中的`#define print(x) printf("the no, "%d", is", x)`是一个宏定义,用于格式化输出整数。
6. **大小计算**:
- `sizeof(str)`返回数组`str`所占内存大小,对于字符串常量,它通常等于字符串长度加1(用于存储结束符'\0'),因此为6。
- `sizeof(p)`返回指针`p`的大小,通常为4字节(在32位系统中)。
- `sizeof(n)`返回`n`的大小,`int`类型通常是4字节。
- 函数参数传递时,`sizeof(str)`在函数内部只表示指针的大小,所以也是4字节。
7. **动态内存分配**:
`setmemory`函数分配内存后,`test`函数中的`str`被赋值为指向动态内存的指针,然后`strcpy`拷贝字符串"hello",最后`printf`打印字符串内容。
8. **指针操作**:
`(ptr++)+=123;`这条语句先自增`ptr`,然后将其值增加123。由于自增操作发生在前面,`ptr`的初始值是数组`arr`的第一个元素的地址,因此`*ptr`和`*(++ptr)`都是8,但实际代码中这样使用会改变指针值,可能导致意外行为。
9. **编程题**:
- `strcmp`函数要求编写一个不依赖库函数的字符串比较函数,当两个字符串相等时返回0,不等时返回-1。
- `fun`函数用来判断字符串是否为回文,回文是指正读反读都一样的字符串,返回1表示是回文,0表示不是,-1表示出错。
**预编译**:
预编译是在正式编译之前处理源代码的过程,主要任务是替换宏定义、处理条件编译指令(如`#if`, `#ifdef`, `#ifndef`等)以及包含文件。预编译适用于:
1. 当大型代码体不经常改动时,预编译可以提高编译效率。
2. 多个模块共享相同包含文件和编译选项时,预编译头文件可以减少重复工作。
**常量指针的区别**:
- `char*const p`:指针`p`是常量,意味着不能更改`p`指向的地址,但可以修改`p`所指向的字符。
- `char const* p`:这是相同的,也表示`p`指向的内容是常量,不能通过`p`修改。
- `const char* const p`:指针`p`和它所指向的内容都是常量,既不能改变`p`的地址,也不能修改`p`指向的字符。
以上就是华为软件工程师笔试题中涉及的主要知识点及其详解。对于准备面试或笔试的软件工程师来说,掌握这些基础概念和编程技能至关重要。
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
mhzhang_yjs07
- 粉丝: 2
- 资源: 4
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展