自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 linux中多路复用IO:select、poll和epoll

函数头文件函数原型函数功能监控一组文件描述符, 阻塞当前进程, 由内核检测相应的文件描述符是否就绪,一旦有文件描述符就绪,将就绪的文件描述符拷贝给进程, 唤醒进程处理函数参数nfds:最大文件描述符加1readfds:读文件描述符集合的指针writefds:写文件描述符集合的指针exceptfds:其他文件描述符集合的指针timeout:超时时间结构体变量的指针函数返回值成功:返回已经就绪的文件描述符的个数。

2025-11-02 21:51:09 1029

原创 C++第十四篇:多态

在 C++ 中,是面向对象编程的核心特性之一,指 “同一接口,不同实现”—— 通过基类的接口调用时,能根据对象的实际类型执行不同的派生类实现。多态让代码更灵活、可扩展,是实现 “开闭原则”(对扩展开放,对修改关闭)的重要手段。说白话,多态就是C++的一种特点,那它具体怎么提现,我简单举一个例子,让大家能理解多态的。还是那王者**来说,王者**有那么多英雄,我们假设想要构建游戏中的角色,在C++这样以面向对象的编程中是怎样来实现的呢?

2025-10-26 11:27:57 951

原创 C++第十三篇:继承

在 C++ 中,继承是面向对象编程的三大核心特性之一(另外两个是封装和多态),它允许一个类(子类 / 派生类)继承另一个类(父类 / 基类)的属性和方法,从而实现代码复用和层次化设计。什么时候使用继承呢?is a的关系。(就是说子类时父类的一个特殊的类型,就好比”“和“”的关系,圆形是归属图形的一种,圆形有图形的特征,需要继承自图形。在好比打王者荣耀时的“”和“”的关系,韩信是一个英雄,它有英雄的基本特征,如血条,蓝条等等。存在层次关系和实现的场景会使用继承。

2025-10-21 21:35:19 757

原创 C++第十二篇:运算符重载

C++ 中的运算符重载是一种允许程序员为自定义类型(如类或结构体)重新定义已有运算符行为的机制。通过运算符重载,你可以像使用内置类型(如 int、double)一样,对自定义对象使用常见的运算符(如 +、-、==、<< 等)。简单说就是你可以改变一个符号的作用,自己定义它的功能,甚至将 '+' 改为 ' - ' 的作用。

2025-10-01 15:35:02 805

原创 C++第十一篇:friend友元

示例中经过friend声明过后,sum函数就可以直接访问私有和保护成员,当然,前提是你得将对象当做参数传过来,因为。友元成员函数是指一个类的成员函数被另一个类声明为 “友元”,从而使得该成员函数能够访问另一个类的。这里和前面的类型知识将函数改为了类的成员函数,注意声明友元函数是的写法即可。都可以访问类 A 的私有和保护(成员,无需逐个声明函数。是一种特殊的函数,它不属于某个类,但被允许访问该类的。如果类 A 声明类 B 为友元类,那么类 B 的。,只有通过这样才可以,使用引用更好。,打破了类的封装性限制。

2025-09-26 22:43:18 332

原创 C++第十篇:const关键字

const是一个非常重要的关键字,用于声明常量或限制变量的修改权限,主要作用是,同时也能帮助编译器进行优化和类型检查。

2025-09-23 22:09:26 944

原创 C++第九篇:静态函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2025-09-22 19:59:59 255

原创 C++第八篇:构造函数

大家都知道C++是面向对象的编程语言,既然是面向对象,那就少不了创建对象,创建对象就离不开构造函数构造函数是一个特殊的成员函数名字和类名相同没有返回值,创建类型对象时,自动调用, 在对象的生命周期内只能调用一次 , 保证每个数据成员都有一个合适的初始值。

2025-09-22 19:59:39 401

原创 C++第七篇:类

运行结果如下:相比C语言,C++对结构体进行了部分的增强,使得它的更加灵活,功能更加强大。

2025-09-22 19:58:47 246

原创 C++第六篇:对象的创建

这里的new和delete实际上是对C语言中的malloc和free的封装,简单理解。

2025-09-22 19:58:25 234

原创 C++第四篇:函数增强

C++ 在函数方面相比 C 语言引入了许多增强特性,主要包括 ​等。这些特性提高了代码的灵活性、安全性和性能。这篇文章只说前三个,后面的会单独写一篇来讲。

2025-09-22 19:55:44 435

原创 C++第三篇:引用

在C++中提供了一种不使用指针变量同样可以达到同样效果的机制,并且使用起来更方便,这种机制叫做"引用。

2025-09-22 19:55:35 942

原创 C++第二篇:命名空间(namespace)

在C语言中,定义变量的时候,全局变量名并不能相同,不然就会报错。但是在C++中,有了命名空间的存在,就可以避免这个问题。我们可以将它想像成一个班级,一班的李华和二班的李华名字都叫李华,但是一个是一班的,一个二班的,并不会混淆。可以看到,在这段代码中,有两个命名空间,具有相同的变量num,但并不影响,同时在命名空间中环定义了一个结构体。实际上,这里牵扯到了C和C++的一个区别,就是C++是。在C中,我们通常是使用。修饰,函数则不需要,因为函数是默认可以被调用的。:再看上面的代码,实际上我们会发现,

2025-09-22 19:55:26 341

原创 C++第一篇:基础开始

endl是一个函数指针,用来添加换行符,并刷新输出缓冲区。现在先不必去细究,只需要知道它就是用来打印信息的,知道它怎么使用就可以。符号,以前在学习C时,它是左移运算符,但在这里很明显不是,这就要牵扯到C++中对于运算符重载的拓展,实际就是对一个运算符的进行一个重新定义它的功能,后面会讲到。这是是C++对于C的增强,学习C++,就是要学会这些内容。由C语言发展来的,所以C++是完全兼容C语言。这就是一个非常简单的C++程序。,里面包含了一下变量,函数和类。声明了命名空间,这个下节会说到。,声明命名空间之后,

2025-09-22 19:55:13 387

原创 C++第五篇:面向对象的编程思想

反过来再看冰箱的问题:那么按照面向对象的思想,冰箱是一个对象,可乐是一个对象,关门和开门这个动作则是冰箱这个对象内置的一个函数,功能就是将某一个东西放入冰箱,不一定是可乐,也可能是苹果,也可能是大象。假设我现在要统计学生的信息,那么我就需要创建一个学生对象,这个对象就是初始化的时候信息就是那个具体学生的信息,不论有多少个学生都可以,因为他们都属于学生,有共同的一些属性。这就是C++面向对象的编程思想,对象的属性和可以执行的操作都被封装在了类中,只需要创建一个对象,然后就可以调用需要的方法。

2025-09-22 19:54:59 361

原创 QT6中应用程序的图标设置

这个博客讲述了在编写QT6时,给自己的应用程序添加图标的过程。

2025-09-22 19:17:25 370

原创 大疆校招嵌入式B卷笔试

考试内容:前几题都比较懵,ARM中的NEON,DDR和SRAM、进程和线程(自旋锁和互斥锁,再就是用户和内核的一些优先级)、linux命令、.text、.bss段作用之类的、内联函数、神经网络部署到终端的减少性能消耗优化方式、各种通信协议I2C、pcle、uart、spi,还就是程序判断题(比较简单)。tasks字符串,A~Z,来描述CPU任务(自己输入得到),还有一个冷却周期n(自己输入得到),一个周期由任务和一个冷却周期得到,需要注意的是两个相同的任务则需要加上一个冷却周期。

2025-09-05 14:24:36 128

原创 进程间的通讯(ipc)-----消息队列

以上的内容就是有关消息队列的内容了,有发现问题的可以提出来,共同进步。

2024-10-19 19:41:53 1315 1

原创 进程间的通讯(ipc)-----信号

因为函数中涉及到了多个结构体,所以就画了一张结构图,可以帮助理解以上就是关于信号的内容,本文仅仅介绍了有关信号的相关知识和简单使用,更多的还需要自己不断摸索,不断学习。若发现错误,请指正,共同进步。

2024-10-08 20:56:07 756

原创 linux进程中的有名管道和无名管道

有名管道和无名管道

2024-09-23 21:47:43 1303

原创 linux中进程的替换

进程的替换目的是为了节省资源,假设现在又A、B、C三个应用程序需要执行,如果我每执行一个程序都创建一个进程,目的是可以实现的,但是会浪费资源,那么可以创建一个进程,然后让进程在一个进程进行替换,那么就可以避免创建过多的进程导致资源的浪费。

2024-09-11 20:44:08 889

原创 C语言中宏定义(看一下是你了解的宏吗?)

1.格式为 #define 宏名 常量,通常情况下宏名为大写。是你心中的那个答案吗?在linux操作系统下,可以使用gcc -E 文件名.c -o 文件名.i 来生成预编译结果,vim 文件名.i 可以进入查看,翻到最下面,我们来看一下它预编译后的结果:可以看到,宏定义只是将原有的常量替换宏名,并没有做任何的计算,6*6=36的结果是不存在的!

2024-09-11 20:10:41 684

原创 linux进程中的wait()和waitpid()

wait() 和 waitpid() 函数在C语言中有释放子进程遗留资源的作用。当一个子进程结束时调用exit()或_exit(),会进入僵死状态,它的资源(如内存、打开的文件描述符等)并不会立即被系统回收。这些资源会保留,直到父进程调用 wait() 或 waitpid() 来收集子进程的状态信息。在父进程中调用wait()和waitpid(),会等待子进程结束,期间父进程会进入阻塞状态,直到接收到子进程结束的信号,才会继续执行。如果有多个子进程,那使用一个wait(NULL),父进程只会等待其中的一个。

2024-08-07 23:37:12 1244

原创 linux进程中的exit()和_exit()

exit() 与 _exit()的不同_exit()属于系统调用,能够使进程停止运行,并释放空间以及销毁内核中的各种数据结构。exit()基于_exit()函数实现,属于库函数, 会自动刷新I/O缓冲区。

2024-08-01 19:55:17 791

原创 C语言中的指针

这次主要介绍指针的知识,通过演示一些简单的应用帮助大家更好的了解指针。指针实际上就是地址,保存地址的那个变量叫做指针变量,指针变量中保存的一定是地址。这个就是正常情况下的指针的定义,打印出的就是num的地址。指针应用非常广泛且灵活,是c的的难点和重点,希望引起重视。

2024-07-01 00:33:55 2230

原创 C语言的数组

数组的基本知识

2024-06-24 15:22:03 446

原创 STM32F103C8T6的通信设备

全双工代表的发送和接收可以同时进行,一般都会有两根数据线,分别是接收和发送,反之就是半双工,其次还有单工,只能从一个设备到另一个设备。I2c和SPI有单独的时钟线,是同步时钟,意味着接收方可以在时钟的指引下进行采样数据。异步时钟则需要双方约定一些频率,并且需要加上帧头和帧尾。还有电平,单端是需要双方共地,电瓶高低取决于对地的电压差。CAN,USB是差分信号,是靠两个引脚的差分电压来传输信号的,不用接地,但USB中有些协议是用到单端信号,所以USB还是需要共地的。

2024-06-12 22:09:09 707

原创 关于rand()与srand()的介绍与应用

描述:C 库函数返回一个范围在 0 到RAND_MAX之间的伪随机数。RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。rand()函数是存在于<stdlib.h>库函数中,在使用前一定记得将其包含进去。rand()函数是生成一个随机数的函数,实际上,rand () 函数产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值我们称之为“种子”。

2024-06-02 17:38:06 597

原创 C语言的基本知识

入门c语言知识,以及一些特别情况!

2024-05-27 01:12:02 2361

原创 C语言中的运算符

众所周知,C语言与嵌入式的关系密不可分,所以,要做一名合格的嵌入式工程师,必须要打好C语言的基础,今后我也会将自己学习到的C语言知识及细节在博客中分享,对我来说也是学习知识后的巩固,有错误的地方希望大家能够大声指出,很开心能和大家一起进步!

2024-05-23 23:18:08 2049 1

原创 linux操作系统下终端基本操作及快捷方式

.linux基本使用方法;基本命令;根目录中主要的文件;编程用的编辑器和编译器;将系统设置成中文;

2024-05-02 19:17:20 1212 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除