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

1. 判断两个字符串数组地址是否相等

char s1[] = "Hello World!";
char s2[] = "Hello World!";
if (s1 == s2)
    printf("Equal!");
else
    printf("Not equal!");

解析:

s1s2 是两个不同的数组,虽然内容相同,但它们是两个独立的内存空间,地址不同。

输出:

Not equal!

2. sizeof、strlen对比

char s[] = "Hello World!";
char* p = s;
int n = 10;
printf("%d %d %d %d\n", sizeof(s), sizeof(p), strlen(p), sizeof(n));

解析:

  • sizeof(s) = 12(含\0
  • sizeof(p) = 4(指针大小)
  • strlen(p) = 11(字符数)
  • sizeof(n) = 4

输出:

12 4 11 4

3. 指针交换函数

swap(p, q); // 不会交换指针本身
swap2(&p, &q); // 才能交换 p 和 q 的指向

输出解释:第一次 swap 后:a = 2, b = 1, *p = 2, *q = 1

第二次 swap2 后:p 和 q 互换 → *p = 1, *q = 2

输出:

2,1,2,1,2,1,1,2

4. 合并两个字符串排序

s1 = "acmghn"
s2 = "bcfhi"

合并后排序结果为逐字符比较小者先放入:a, b, c, c, f, g, h, h, i, m, n → abccfghhimn

输出:

abcbcfmghhin

(注意根据字符 ascii 逐字符合并,不排序

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式笔试专栏 文章被收录于专栏

本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。

全部评论
点赞 回复 分享
发布于 04-25 21:43 山西
这题有点意思
点赞 回复 分享
发布于 04-25 17:32 黑龙江

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务