C语言面试深度解析:嵌入式开发笔试题

需积分: 8 0 下载量 187 浏览量 更新于2024-08-04 收藏 37KB DOC 举报
"C语言实际工作中的面试题" 在C语言的实际工作中,面试通常会涉及到对语言基础、指针操作、内存管理、数据结构、宏定义以及程序执行流程等多方面的理解。以下是对这些面试题的详细解答: 1. 填空题 - sizeof(char*) = 4 (通常在32位系统中,指针占用4个字节) - sizeof(char[3]) = 3 (数组长度为3,每个字符占1字节) - sizeof(char*[3]) = 12 (一个指针数组包含3个指针,每个指针4字节) - sizeof(char[]) = 6 (字符串"const"包含6个字符,末尾还有一个隐含的'\0'字符) - sizeof(char[8]) = 8 (分配8个字节,但只用到6个,剩余2字节未用) - sizeof(char*) = 4 (字符串常量实际上是一个指向字符数组的指针) 2. a[q-p] = 2 (q-p表示从a开始到a[2]的偏移量,即2) 3. 大字节模式:78 56 34 12 小字节模式:12 34 56 78 (32位整数的高字节存储在低地址,低字节存储在高地址) 4. 输出结果是50, 20 (函数fun中的cp和dp分别被赋值为x+y和x-y,即50和-20) 5. z的值为22 (N被展开为3,Y(5+1)计算得到18,所以z=2*(3+18)=22) 6. a1 = 1 (d为0,非0为真,所以a1为1),a2 = 0 (b和c不相等,表达式b!=c为真,但赋值给整型变量a2时,真值转换为1,所以a2为0) 7. 结构体大小计算: - sizeof(DATE) = 12 (long i 占8字节,int k[5]占20字节,但因为对齐规则,实际大小是12字节) - sizeof(max) = 12 (DATE类型的联合体变量max) - 所以printf的结果是:12 + 12 = 24 8. 这段代码中,sum函数有静态变量b,每次调用时b的值都会累加,而局部变量c仅在函数内部有效。因此,输出为: 7, 11, 15, 19, 23 9. 局部变量存在于栈(stack)中,全局变量存在于数据段(data segment)中,动态申请数据存在于堆(heap)中。 10. 程序的运行结果: 1, 2, 3, 4, 5, 以上是C语言面试题的详细解答,涵盖的知识点包括指针、数组、内存管理、数据类型、运算符优先级、宏定义、结构体与联合体以及变量的作用域。理解和掌握这些知识点对于C语言开发者至关重要。