嵌入式软件工程师C语言笔试精华问题解析
版权申诉
130 浏览量
更新于2024-08-03
收藏 122KB PDF 举报
嵌入式软件工程师C语言笔试题涵盖了C语言基础知识和嵌入式系统特定概念的测试。以下是部分题目详解:
1. **变量存储位置**:
- 局部变量存在于**函数栈**中,它们在函数调用时创建,函数结束时自动释放。
- 全局变量存在于**数据段**或**静态区**,在整个程序运行期间存在。
- 动态申请的数据通常存在于**堆**中,通过`malloc`等内存管理函数分配。
2. **零值比较与指针大小**:
- `inta`: 使用`if (a == 0)`检查整型变量`a`是否为零。
- 对于布尔类型`boola`,虽然没有直接的零值比较,但可以将其视为`true`或`false`的表示,通常不直接进行数值比较。
- 对于浮点型`floata`,同样不支持直接比较为零,可能需要使用`fabs`函数辅助。
- `void* a`:指针类型的大小取决于目标架构,不能直接做零值比较。
3. **内存计算**:
- `sizeof(str)`返回字符串常量数组的字节数,由于`str[]`包含10个字符加上终止符,所以结果是10。
- `sizeof(p)`通常返回指针类型的大小,通常是4或8字节,取决于架构。
- `sizeof(n)`返回整型变量的字节数,即4字节。
- `sizeof(ptr)`同理,是`void*`指针的大小。
4. **指针算术**:
- `p1 + 5`表示向`p1`的地址偏移5个字节,如果是`unsigned char`,结果将是0x87000005;如果是`unsigned long`,则需考虑到字节对齐,可能不会简单加5。
- `p2 + 5`类似,取决于`p2`指向的`unsigned long`类型占用多少字节。
5. **字符串操作**:
- `strcpy(str, "0123456789")`将一个十进制数字字符串复制到`str`中,覆盖原有内容,结果是`str`存储了数字0-9。
6. **程序跳转**:
- C语言中无直接指令实现绝对地址跳转,但可以通过函数调用间接实现,如`longjmp`或异常处理。
7. **数组长度计算**:
- 使用预处理器宏定义`#define ARRAY_COUNT (sizeof(array) / sizeof(array[0]))`计算数组`array`的元素个数,前提是数组是连续的。
8. **预处理器条件编译**:
- 这段代码用于防止多次包含同一头文件。`#ifndef`检查宏是否未定义,如果未定义则包含头文件。`#ifdef __cplusplus`确保在C++代码块中正确使用`extern "C"`,避免链接时的问题。
9. **结构体大小**:
- `struct token_t`中的各个字段大小之和就是结构体的总大小,即`4 + 4 + 8 + 8 = 24`字节。
10. **强制类型转换**:
- `short(*day_p)[16]`是二维数组指针,空白处应填写`day_p = (short(*)[16])malloc(sizeof(short[16]) * n);`,其中`n`是需要的行数。
11. **TCP/UDP区别及通信过程**:
- TCP(Transmission Control Protocol)提供可靠连接,有流量控制、错误检测和重传机制;UDP(User Datagram Protocol)是无连接的,数据报文可能丢失或乱序,适合实时性要求高的应用。
- TCP/IP通信建立过程包括三次握手(SYN, SYN-ACK, ACK)来确认连接,而UDP仅需一次握手(SYN)就可发送数据。
2021-09-28 上传
2021-09-14 上传
2023-11-24 上传
2023-05-20 上传
2023-05-24 上传
2023-09-12 上传
2023-07-13 上传
2023-04-14 上传
2023-07-31 上传
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/user-vip.1c89f3c5.png)
2201_75761617
- 粉丝: 24
- 资源: 7382
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解