1. IIC的通信过程是指通过IIC总线进行设备之间的通信。通信过程包括以下几个步骤:
  1. 主设备发送起始信号,通知从设备进行准备;
  2. 主设备发送设备地址和读写控制位,选择要通信的从设备;
  3. 从设备接收到地址后,发送应答信号;
  4. 主设备发送数据或命令给从设备;
  5. 从设备接收到数据或命令后,发送应答信号;
  6. 主设备继续发送数据或命令,或者接收从设备发送的数据。
  1. SPI的通信速度取决于以下几个因素:
  1. SPI时钟频率:通信速度与SPI时钟频率成正比,频率越高,通信速度越快;
  2. 传输数据的位数:每个数据包的位数越多,传输速度越慢;
  3. SPI模式:不同的SPI模式对应不同的通信速度;
  4. 数据传输方式:全双工、半双工或单工。
  1. static关键字的作用:
  1. 在函数内部,修饰局部变量时表示该变量在函数执行完后仍然存在,不会被销毁;
  2. 在全局变量前,表示该变量只在当前源文件中可见,不能被其他源文件访问;
  3. 在函数声明前,表示该函数只在当前源文件中可见,不能被其他源文件调用;
  4. 在类中,修饰成员变量时表示该变量为类的静态成员,所有类的对象共享同一份静态变量;
  5. 在类中,修饰成员函数时表示该函数为类的静态成员函数,可以直接通过类名调用,不需要创建对象。

static和const的使用: static关键字可以和const关键字同时修饰成员函数,表示该函数为静态成员函数且不能修改类的成员变量。

  1. 静态链接和动态链接的区别: 静态链接是在编译时将所有需要的代码和库文件链接到可执行文件中,使得可执行文件独立运行。动态链接是在运行时将程序所需要的函数从共享库中加载到内存中,多个程序可以共享一个库文件。

  2. sizeof和strlen的区别: sizeof是C/C++中的操作符,用于计算数据类型或变量所占的字节数; strlen是C/C++中的字符串处理函数,用于计算字符串的长度,即字符串中字符的个数。

  3. C语言的关键字static和C++的关键字static有以下区别:

  1. C语言中的static关键字可以修饰全局变量和局部变量,表示变量的作用域仅限于当前文件,C++中的static还可以修饰类的成员变量和成员函数,表示变量或函数为静态成员,与类的对象无关;
  2. C语言中的static全局变量的生命周期是整个程序运行期间,局部变量的生命周期是函数执行期间,C++中的静态成员变量和静态成员函数的生命周期也是整个程序运行期间;
  3. C语言中的static关键字可以修饰函数,表示函数的作用域仅限于当前文件,C++中的static修饰成员函数时表示函数为静态成员函数,可以直接通过类名调用。
  1. 对于一个频繁使用的短小函数,可以使用内联函数来实现。内联函数将函数的代码直接插入到调用处,避免了函数调用的开销,提高了执行效率。但是内联函数的缺点是会增加代码的体积,因此适合用于频繁使用的小规模函数。

  2. 纯虚函数是一个在基类中声明但没有实现的虚函数,主要用于定义接口,要求子类必须实现这个函数。纯虚函数的作用是实现多态,通过基类指针或引用调用纯虚函数时,根据实际指向的对象类型来执行相应的函数。

实现纯虚函数可以在基类中使用"= 0"来声明,表示这个函数为纯虚函数,不需要在基类中提供函数的具体实现。

  1. vector适合用于需要随机访问和动态增删元素的场景,因为它使用连续的内存存储元素,可以通过下标快速访问元素,并且在尾部插入和删除元素的时间复杂度为常数时间; list适合用于需要频繁插入和删除元素的场景,因为它使用链表存储元素,插入和删除元素的时间复杂度为常数时间,但是随机访问元素的时间复杂度为线性时间。

  2. new/delete和malloc/free之间的关系: new是C++中的关键字,用于动态分配内存并调用构造函数初始化对象,对应的释放内存的操作是delete; malloc是C语言中的函数,用于动态分配内存,无法调用构造函数初始化对象,对应的释放内存的操作是free。

new/delete相比malloc/free的优点是能够自动调用构造函数和析构函数,更方便使用。在C++中,一般推荐使用new/delete来进行内存的分配和释放。

  1. QT中的对象间通信可以使用信号和槽机制来实现。对象通过发送信号来通知其他对象,接收到信号的对象通过槽函数来处理信号。

  2. typedef和define的区别: typedef是C/C++中的关键字,用于定义类型别名,例如:typedef int Integer; #define是C/C++中的预处理指令,用于宏定义,可以用来定义常量或函数宏。

typedef定义的是类型别名,可以提高代码的可读性和可维护性;#define定义的是文本替换,不会进行类型检查。

  1. 面向对象是一种编程范式,将程序组织为对象的集合,通过对象之间的交互来实现程序的功能。面向对象和面向过程的区别在于: 面向对象将程序分解为多个对象,每个对象具有自己的属性和行为,对象之间通过消息传递来进行交互,更加灵活和可扩展; 面向过程将程序分解为多个过程或函数,通过函数的调用来实现程序的功能,过程与数据是分离的,更加注重算法和过程的设计。

  2. 面向对象的三大特性是封装、继承和多态: 封装:将数据和操作封装在对象中,对外部隐藏对象的内部实现细节,提高了代码的可维护性和安全性; 继承:通过继承机制,实现了代码的重用和扩展,子类可以继承父类的属性和方法,并可以重写和添加新的方法; 多态:同一类型的对象在不同的情况下表现出不同的行为,提高了代码的灵活性和可扩展性。

  3. 多态可以通过虚函数来实现。虚函数是在基类中声明为虚函数的函数,当通过基类指针或引用调用虚函数时,会根据实际指向的对象类型来调用相应的函数,实现了多态的效果。多态可以提高代码的可扩展性和可维护性,使得程序更加灵活和易于扩展。

16IIC的通信过程17SPI的通信速度18static关键字有什么作用? static 和const分别怎么用类里面static和const可以同时修饰成员函数吗?19静态链接和动态链接有什么区别?20sizeof和strlen的区别?21C语言的关键字static和C++的关键字static有什么区别22对于一个频繁使用的短小函数应该使用什么来实现?有什么优缺点?23纯虚函数有什么作用?如何

原文地址: https://www.cveoy.top/t/topic/i8aM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录