嵌入式笔试刷题(第23天)
1. 判断两个字符串数组地址是否相等
char s1[] = "Hello World!"; char s2[] = "Hello World!"; if (s1 == s2) printf("Equal!"); else printf("Not equal!");
解析:
s1
和 s2
是两个不同的数组,虽然内容相同,但它们是两个独立的内存空间,地址不同。
输出:
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 内核、以及实用电路知识等内容。