嵌入式软件面试高频基础——C语言

本文详细介绍了C++中的构造函数和析构函数,包括它们的用途和区别。接着探讨了内联函数与宏定义的不同,强调了内联函数的类型检查和性能优势。此外,还讨论了strcpy与memcpy在字符串和内存复制上的应用及安全性问题。最后,解释了IIC接口中上拉电阻的作用和延时设置的原因,以确保通信的稳定性和数据的正确性。
摘要由CSDN通过智能技术生成

一、构造函数与析构函数用法与区别

构造函数:是一种特殊的方法,一个类也可以有很多构造函数,可以根据其参数不同或者参数类型不同来区分,也就是重载可以为对象成员赋初始值。常常与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以上来固化数据。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西邮小菜机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值