嵌入式笔试刷题第8天
✅ 第1题
题目:
某32位系统下,C程序,请写出输出结果:
void Foo(char str[100]){ printf("%d\n", sizeof(str)); } int main(int argc, char **argv){ char str[] = "http://localhost"; char *p1 = str; void *p2 = malloc(100); int n = 10; struct A { int n; char str[10]; } struct_a; printf("%d\n", sizeof(str)); printf("%d\n", sizeof(p1)); printf("%d\n", sizeof(p2)); printf("%d\n", sizeof(n)); printf("%d\n", sizeof(struct_a)); Foo(str); return 0; }
答案与解析:
sizeof(str)
:数组str
是初始化为"http://localhost"
(长度 17,含结尾 \0),但定义为数组,数组大小为 17。sizeof(p1)
:p1
是一个指针,32 位系统指针大小为 4。sizeof(p2)
:void *
指针,大小也是 4。sizeof(n)
:整型,32 位系统中为 4。sizeof(struct_a)
: 成员:int n(4字节)+ char str[10](10字节);结构体可能有字节对齐,填充到 16 字节,所以为 16。sizeof(str)
(在Foo
中):传入的是数组名退化为指针,因此为 4。
最终输出:
17 4 4 4 16 4
✅ 第2题
题目:
请简述以下两段关于循环的程序的优缺点:
// 第一个 for(i = 0; i < N; i++) { if (condition) DoSomething(); else DoOtherthing(); }
// 第二个 if (condition) { for(i = 0; i < N; i++) DoSomething(); } else { for(i = 0; i < N; i++) DoOt
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式笔试专栏 文章被收录于专栏
本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。