嵌入式软件面试高频基础——C语言
Posted 新时代城市农民工
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式软件面试高频基础——C语言相关的知识,希望对你有一定的参考价值。
一、构造函数与析构函数用法与区别
构造函数:是一种特殊的方法,一个类也可以有很多构造函数,可以根据其参数不同或者参数类型不同来区分,也就是重载。可以为对象成员赋初始值。常常与new运算符一起使用在创建对象的语句中。
析构函数:对象所在的函数已调用完后,系统自动调用析构函数。进行清理善后工作。
二、内联函数和宏定义区别
1、内联函数和普通函数相比可以加快程序的运行速度,因为不需要进行函数切换,在编译时内联函数可以直接被镶嵌到目标代码中,而宏只是一个简单的替换,在预处理阶段被换到主函数中。
2、内联函数需要做参数类型检查,这也是内联函数与宏定义相比的优点。
3、内联函数是嵌入代码,执行时不需要跳转,当内联函数短小时,占用空间,但是效率提高。
内联函数适用情况:1、函数需要被反复调用。2、函数只有短短几行。(内联函数需要与函数体一起定义,在定义函数时定义毫无意义,例:inline void foo() )
三、strcpy与memcpy区别
1、strcpy只可以复制字符串,而memcpy可以复制任何内容,例如字符串、数组、整型数等。
2、strcpy不需要指定长度,遇到‘\\0’结束,容易溢出。而memcpy可以指定复制的长度。
四、iic为什么要接上拉电阻
因为要让iic输出高电平,因为iic是开漏输出,输出不来高电平,所以外接上拉电阻帮助其上拉。
五、iic为什么要延时5us
I2C驱动EEPROM的时序要严格按照下图:
cortexm3的指令有单周期的,也有多周期的,3级流水线相当于同时处理3条指令,这同时被处理的3条指令处于指令执行周期的不同时段。所以平均下来,会达到1.25mips/Mhz的效果,也就是每个时钟周期能够执行超过一条指令。但具体到程序,并不是总能达到这个效果。写和读之间也必须有延时,不可以写之后立刻读。需要延时相当长一段时间。读操作没有时间要求,写操作一次最多8字节,需要得到10ms以上来固化数据。
以上是关于嵌入式软件面试高频基础——C语言的主要内容,如果未能解决你的问题,请参考以下文章