嵌入式软件面试高频基础——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语言,stm32,c语言)