嵌入式笔试刷题(第55天)
1. new/delete 与 malloc/free 的联系与区别?
联系:
- 都用于动态内存分配。
new
调用的是构造函数,delete
调用析构函数,而malloc/free
仅仅是分配和释放内存。
区别:
类型 |
运算符 |
函数 |
返回值 |
返回对应类型的指针 |
返回
,需强制转换 |
构造析构 |
调用构造和析构函数 |
不调用构造和析构函数 |
可重载 |
可以重载 |
不能重载 |
安全性 |
类型安全 |
非类型安全 |
2. 使用 bind 等函数写出 TCP client 和 TCP server 的建立连接流程。
TCP Server:
socket() // 创建 socket bind() // 绑定地址和端口 listen() // 监听端口 accept() // 接收客户端连接 recv()/send() // 通信 close()
TCP Client:
socket() // 创建 socket connect() // 连接服务器 send()/recv() // 通信 close()
3. 有字符串 char num[8] = "123456";
,用哪个标准库函数将其转为 int?写一个实现同功能的函数。
标准库函数:
int val = atoi(num);
自实现函数:
int myAtoi(const char *str) { int res = 0; while (*str >= '0' && *str <= '9') { res = res * 10 + (*str - '0'); str++; } return res; }
4. 将上题输出的 int 整型转换为 8241BCD 码。
void intToBCD(int num, unsigned char *bcd) { for (int i = 0; i < 4; ++i) { bcd[3 - i] = ((num % 100 / 10) << 4) | (num % 10); num /= 100; } }
5. 不使用任何新变量或新增内存,交换两个无符号整型数 a 和 b。
void swap(unsigned int *a, unsigned in
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式笔试专栏 文章被收录于专栏
本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。