嵌入式笔试刷题(第55天)

1. new/delete 与 malloc/free 的联系与区别?

联系:

  • 都用于动态内存分配。
  • new调用的是构造函数,delete调用析构函数,而malloc/free仅仅是分配和释放内存。

区别:

类型

运算符

函数

返回值

返回对应类型的指针

返回

void*

,需强制转换

构造析构

调用构造和析构函数

不调用构造和析构函数

可重载

可以重载

不能重载

安全性

类型安全

非类型安全

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 内核、以及实用电路知识等内容。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务