嵌入式linux笔试题

这篇博客主要涵盖了嵌入式系统中的一些基础概念和技术,包括C语言中的死循环实现、内存区域分配、const关键字的意义、代码问题分析、宏定义应用、预编译作用、指针与引用的区别、静态变量的作用、进程与线程的区别、TCP与UDP的对比等。内容涉及到编程技巧、内存管理、预处理指令和网络协议等多个方面,是嵌入式开发人员必备的知识点梳理。
摘要由CSDN通过智能技术生成

1.嵌入式系统中经常要用到无限循环,如何用C编写死循环

答:while(1){}或者for(;😉

2.程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里。

答:程序的局部变量存在于栈区;全局变量存在于静态区;动态申请数据存在于堆区。

3.关键字const有什么含义?

答:1)只读。2)使用关键字const也许能产生更紧凑的代码。3)使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。

4.请问以下代码有什么问题:

int main() {

char a;

char *str=&a;

strcpy(str,“hello”);

printf(str);

return 0;

}

答:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。

5.已知一个数组table,用一个宏定义,求出数据的元素个数

答: #define NTBL (sizeof(table)/sizeof(table[0]))

6.写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。

答:#define MIN(A,B) ((A) <= (B) ? (A) : (B))

考点:

  1. 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。

  2. 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优的代码,了解这个用法是很重要的。

  3. 懂得在宏中小心地把参数用括号括起来。

7.do……while和while有什么区别?

答:前一个循环一遍再判断,后一个判断以后再循环。

8.什么是预编译,何时需要预编译?

答:

1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

9.一个32位的机器,该机器的指针是多少位?

答:指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值