嵌入式软件工程师C语言笔试精华问题解析
版权申诉
126 浏览量
更新于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)就可发送数据。
4370 浏览量
2021-09-14 上传
2021-09-30 上传
458 浏览量
2023-02-22 上传
2023-10-16 上传
2021-09-30 上传
2021-11-15 上传


xox_761617
- 粉丝: 31
最新资源
- Matlab遗传算法工具箱使用指南
- 探索《黑暗王国》:自由编辑的纯文字RPG冒险
- 深入掌握ASP.NET:基础知识、应用实例与开发技巧
- 新型V_2控制策略在Buck变换器中的应用研究
- 多平台手机wap网站模板下载:全面技术项目源码
- 掌握数学建模:32种常规算法深入解析
- 快速启动Angular项目的AMD构建框架:Angular-Require-Kickstart
- 西门子S71200 PLC编程:无需OPC的DB数据读取
- Java Jad反编译器配置教程与运行指南
- SQLiteSpy:探索轻量级数据库管理工具
- VS版本转换工具:实现高至低版本项目迁移
- Vue-Access-Control:实现细粒度前端权限管理
- V_2控制策略下的BUCK变换器建模与优化研究
- 易语言实现的吉普赛读心术源码揭秘
- Fintech Hackathon: 解决HTTP GET私有库文件获取问题
- 手把手教你创建MAYA2008材质库Shader Library