(文章目录) 前言 本篇文章我们接着上一篇文章讲解。 C语言项目实战学生管理系统(1) 一、尾添加 上篇文章我们讲到尾添加一个学生信息,这篇文章我们详细讲述如何尾添加。 //添加一个学生信息 voidAddstuMSG(chararrStunum[10],chararrStuname[10],intiStuSorce);` //添加一个学生信息 voidAddstuMSG(chararrStunum[10],chararrStuname[10],intiStuSorce) { //第一步检验参数合法性 if(0arrStunum[10]||0arrStuname[10]||iStuSo...

  micz61TEX78l   2023年11月13日   26   0   0 插入图片链表赋值

(文章目录) 前言 本篇文章我们带大家学习如何查看学生信息及链表的释放。 一、查看学生信息 查看每一个学生的信息需要我们去遍历链表第一步:定义一个结构体指针指向头,判断头是否为空为空则提示没有学生信息。第二步:每一次循环都让PTemp向后移动一个,当移动到最后一个时PTemp为NULL则不再执行循环。 voidshowdate() { STUNODEpTemp=g_pHead; if(pTempNULL) { printf("无学生信息!\n"); } while(pTemp!=NULL) { printf("学号:%s,姓名:%s,分数:%d\n",pTemp->a...

  micz61TEX78l   2023年11月13日   22   0   0 删除节点链表结构体指针

(文章目录) 前言 前面我们忘记给大家将怎么把系统的指令框输出到控制台上了,今天我们将补上这个点然后再带大家学习如何查找指定学生的信息。 一、输出指令框 这一步就是一些printf打印出命令和一些空格去控制打印的地方,大家可以直接复制下面的代码。 //显示指令 voidshoworder() { printf("学生信息管理系统\n"); printf("本系统操作指令如下\n"); printf("1.增加一个学生信息(尾添加)\n"); printf("2.查找指定学生信息(姓名/学号)\n"); printf("3.修改指定学生信息\n"); printf("4.保存学生的信...

  micz61TEX78l   2023年11月13日   26   0   0 链表退出程序结构体指针

(文章目录) 前言 本篇文章我们来讲解C中的新式类型转换,在C语言中遇到类型转换我们一般使用强制类型转换,但是这种转换的方式是不安全的,可能会导致截断的发生,C引入的新式类型转换解决了这个问题。 C中的新式类型转换是一种更加安全和灵活的类型转换方法,它提供了四种不同的转换操作符,分别是static_cast、dynamic_cast、reinterpret_cast和const_cast。每种转换操作符都有其特定的用途和限制。 一、static_cast static_cast用于基本类型之间的转换,以及非多态类型的转换,如指针或引用的类型转换。它具有以下特点: 用于常见的转换操作,如数值类...

  micz61TEX78l   2023年11月13日   22   0   0 子类值类型类型转换

(文章目录) 前言 本篇文章来讲解DMA的概念,并使用DMA来进行串口的数据收发。 一、DMA概念 DMA(DirectMemoryAccess,直接内存访问)是一种计算机系统的技术,允许外部设备(如硬盘驱动器、网络适配器或图形卡)直接与计算机内存进行数据传输,而不需要CPU的直接参与。这种直接的内存访问可以提高数据传输的效率,并减轻CPU的负担。在没有DMA的情况下,数据传输通常需要通过CPU来完成,这涉及到CPU的中断处理程序从设备读取数据,然后将数据写入内存,或者从内存读取数据,然后将数据发送到设备。这种方式会消耗CPU的时间和计算资源,限制了系统的性能和吞吐量。通过DMA技术,外部设...

  micz61TEX78l   2023年11月13日   42   0   0 数据数据传输串口

(文章目录) 前言 本篇文章来讲解一下条件变量的使用。 一、条件变量概念 条件变量(ConditionVariable)是并发编程中一种线程同步机制,用于实现线程之间的等待和通知机制。它是一种与特定条件相关的线程同步原语。 条件变量用于线程间的协调,允许一个线程在满足某个特定条件之前等待,并在其他线程满足条件后被通知继续执行。它通常与互斥锁(Mutex)结合使用,以提供更精细的线程同步和共享数据的访问控制。 条件变量的基本概念包括以下几个要素: 1.等待和通知:条件变量提供了等待和通知的机制,等待(Wait)操作用于使线程进入等待状态,直到满足某个特定条件。通知(Signal或Broadca...

  micz61TEX78l   2023年11月13日   20   0   0 互斥锁条件变量唤醒等待

(文章目录) 前言 本篇文章继续讲解Linux线程同步,上篇文章讲解了互斥锁,本篇文章为大家讲解try锁和读写锁。 一、try锁 在Linux的多线程编程中,try锁是一种非阻塞的锁机制,也称为尝试锁。它允许线程尝试获取锁,如果锁当前是可用的,线程将获取到锁并继续执行,如果锁当前被其他线程持有,则线程不会阻塞等待,而是立即返回,并且可以根据返回值来确定是否成功获取到锁。 try锁通常通过函数来实现,不同的操作系统或编程库可能有不同的函数名称和用法,下面以常用的pthread库为例进行讲解。 在pthread库中,可以使用pthread_mutex_trylock函数来实现try锁。它的函数原...

  micz61TEX78l   2023年11月13日   20   0   0 读写锁读锁#include

(文章目录) 前言 一、创建工程项目 1.选择工程名称和项目保存路径2.选择QWidget 3.添加保存图片的资源文件:在工程目录下添加Icon文件夹保存图片:将文件放入目录中:将图片添加进入资源文件中: 二、界面布局准备工作 这里我们一共显示4个界面:LED控制界面,温度湿度显示界面,光照强度显示界面,摄像头监测界面。 所以这里需要有4个QWidget来显示对应的界面,考虑到要对这四个界面进行切换,这里会使用到QStackedLayout将四个界面进行管理。 同时需要添加四个按键,使用按键来切换到对应的界面。 首先添加4个界面文件:设置界面为Widget类型: 其他的三个界面也是如此添加。...

  micz61TEX78l   2023年11月13日   15   0   0 插入图片Layout#include

(文章目录) 前言 本篇文章继续带大家来刷题,秋招也快到了大家坚持刷题,相信大家都可以找到好工作。 一、SDK是什么 SDK是软件开发工具包(SoftwareDevelopmentKit)的缩写,它是一组用于开发软件应用程序的工具、库和文档的集合。SDK通常由软件开发平台或框架提供,旨在帮助开发人员更轻松、高效地创建应用程序。 SDK通常包含以下主要组件: 1.API(ApplicationProgrammingInterface):SDK会提供一组API,即一组定义了如何与某个特定平台、操作系统或服务进行交互的编程接口。 2.工具和实用程序:SDK通常提供用于开发、构建、调试和测试应用程序...

  micz61TEX78l   2023年11月13日   27   0   0 内存分配内联函数宏函数

(文章目录) 前言 本篇文章继续带大家来刷题,秋招也快到了大家坚持刷题,相信大家都可以找到好工作。 一、SDK是什么 SDK是软件开发工具包(SoftwareDevelopmentKit)的缩写,它是一组用于开发软件应用程序的工具、库和文档的集合。SDK通常由软件开发平台或框架提供,旨在帮助开发人员更轻松、高效地创建应用程序。 SDK通常包含以下主要组件: 1.API(ApplicationProgrammingInterface):SDK会提供一组API,即一组定义了如何与某个特定平台、操作系统或服务进行交互的编程接口。 2.工具和实用程序:SDK通常提供用于开发、构建、调试和测试应用程序...

  micz61TEX78l   2023年11月13日   32   0   0 内存分配内联函数宏函数

(文章目录) 前言 本篇文章继续带大家来刷题。 一、纯虚函数和虚函数的区别 1.实现:纯虚函数没有具体的实现代码,只有函数原型,通过在函数声明的末尾添加=0来指示。虚函数具有默认的实现代码,但可以在派生类中进行重写。 2.抽象类:包含纯虚函数的类是抽象类(AbstractClass),不能直接实例化对象,只能被用作其他具体类的基类。而包含虚函数的类可以实例化对象,但如果包含了至少一个纯虚函数,则其仍然是抽象类。 3.继承和实现要求:派生类必须实现基类中的纯虚函数,否则派生类仍然是抽象类。对于虚函数,派生类可以选择性地重写或继承基类中的实现。 4.调用方式:虚函数通过动态绑定来调用,根据对象的...

  micz61TEX78l   2023年11月13日   22   0   0 #pragma链表纯虚函数

(文章目录) 前言 本篇文章继续我们的刷题之路。 一、进程控制块 这里只讲解进程的PCB控制块,线程的TCP控制块作用和进程PCB控制块作用类似。 1.PCB控制块的作用 进程控制块(ProcessControlBlock,PCB)是操作系统中用于管理和跟踪进程信息的数据结构。每个进程在操作系统中都有一个对应的PCB,它存储了与进程执行和管理相关的各种信息。PCB在进程的创建、切换和终止等操作中起着重要的作用。 PCB通常包含以下信息: 1.进程标识符(ProcessID,PID):用于唯一标识一个进程。 2.进程状态(ProcessStatus):表示进程当前的执行状态,例如运行、就绪、阻...

  micz61TEX78l   2023年11月13日   26   0   0 链表信号量页表

(文章目录) 前言 本篇文章来带大家学习C中的工厂方法模式。 一、工厂方法模式介绍 工厂方法模式是一种创建型设计模式,用于通过工厂方法创建对象而不需要明确指定其具体类。该模式通过定义一个创建对象的接口,但将具体的对象创建延迟到其子类中。这样可以将对象的创建与使用分离,提高代码的灵活性和可扩展性。 UML结构图: 二、工厂方法模式和简单工厂模式对比 1.实现方式: 简单工厂模式:由一个工厂类负责创建对象,根据传入的参数或条件来决定创建哪种具体对象。相当于一个工厂类集中了所有产品的创建逻辑。工厂方法模式:将对象的创建延迟到子类中,每个具体产品都有对应的工厂类,负责创建该产品。每个工厂类只负责创...

  micz61TEX78l   2023年11月13日   22   0   0 客户端工厂方法模式工厂类

(文章目录) 前言 本篇文章主要来为大家分析队列的内部机制和源码实现。 一、队列结构体分析 在FreeRTOS中队列会使用一个结构体来表示:1.int8_tpcHead和int8_tpcWriteTo:这些指针指向队列存储区的头部和下一个可写入的位置。队列存储区是一个用于存储队列中数据项的缓冲区。 2.union:这个联合体u可以是两种不同类型之一:QueuePointers_t或SemaphoreData_t,这允许队列结构用于不同的用途,例如队列或信号量。 3.在QueuePointers_t结构体中包含pcReadFrom指向当前读位置。 4.List_txTasksWaitingTo...

  micz61TEX78l   2023年11月05日   31   0   0 插入图片链表数据项

(文章目录) 前言 本篇文章主要来为大家分析队列的内部机制和源码实现。 一、队列结构体分析 在FreeRTOS中队列会使用一个结构体来表示:1.int8_tpcHead和int8_tpcWriteTo:这些指针指向队列存储区的头部和下一个可写入的位置。队列存储区是一个用于存储队列中数据项的缓冲区。 2.union:这个联合体u可以是两种不同类型之一:QueuePointers_t或SemaphoreData_t,这允许队列结构用于不同的用途,例如队列或信号量。 3.在QueuePointers_t结构体中包含pcReadFrom指向当前读位置。 4.List_txTasksWaitingTo...

  micz61TEX78l   2023年11月05日   34   0   0 插入图片链表数据项

(文章目录) 前言 本篇文章主要带大家深入分析空闲任务和Tick中断的作用。 一、空闲任务源码分析 在启动调度器时会创建出空闲任务: /启动调度器/ vTaskStartScheduler(); 在空闲任务中会调用到prvCheckTasksWaitingTermination();函数。 该函数会检查正在等待终止的任务列表,这是一组任务,它们已经执行完毕,但它们的资源(如堆栈空间和其他数据结构)还没有被完全释放。这个函数负责清理这些已经终止的任务的资源,以便可以重新使用这些资源。 当配置了configUSE_PREEMPTION可抢占时和configIDLE_SHOULD_YIELD时,...

  micz61TEX78l   2023年11月05日   52   0   0 插入图片链表sed

(文章目录) 前言 本篇文章将作为FreeRTOS最全教程的目录使用。 一、为什么要学FreeRTOS 1.嵌入式系统开发:FreeRTOS是一款广泛用于嵌入式系统开发的实时操作系统。它可以帮助你构建复杂的嵌入式应用程序,有效管理多个任务和资源。 2.实时性:FreeRTOS提供了实时性,允许你创建实时任务,确保任务在规定的时间内完成,适用于需要及时响应外部事件的应用,如飞行控制系统、医疗设备等。 3.多任务编程:FreeRTOS使你能够轻松创建和管理多个任务,使程序结构更清晰、模块化,有助于更好地组织代码。 4.资源管理:FreeRTOS具备资源管理的能力,包括任务、消息队列、信号量等,可...

  micz61TEX78l   2023年11月02日   45   0   0 嵌入式裸机开发.net

(文章目录) 前言 本篇文章将带大家使用STM32cubemx对FreeRTOS进行工程模板的配置。 一、工程的创建 1.开始工程的创建:2.芯片型号选择:3.修改时钟为TIM8:在FreeRTOS中SYSTICK需要为FreeRTOS提供心跳,故这里选择TIM8替换SYNTICK。4.配置RCC:5.配置FreeRTOS: 6.开启串口方便调试和观察: 7.工程路径及编译器选择等: 8.生成独立的.c和.h文件:9.串口重定向: 二、什么是CMSIS CMSIS,即CortexMicrocontrollerSoftwareInterfaceStandard(Cortex微控制器软件接口...

  micz61TEX78l   2023年11月02日   52   0   0 插入图片初始化开发人员

(文章目录) 前言 本篇文章将带大家使用STM32cubemx对FreeRTOS进行工程模板的配置。 一、工程的创建 1.开始工程的创建:2.芯片型号选择:3.修改时钟为TIM8:在FreeRTOS中SYSTICK需要为FreeRTOS提供心跳,故这里选择TIM8替换SYNTICK。4.配置RCC:5.配置FreeRTOS: 6.开启串口方便调试和观察: 7.工程路径及编译器选择等: 8.生成独立的.c和.h文件:9.串口重定向: 二、什么是CMSIS CMSIS,即CortexMicrocontrollerSoftwareInterfaceStandard(Cortex微控制器软件接口...

  micz61TEX78l   2023年11月02日   41   0   0 插入图片5ef5

(文章目录) 前言 本篇文章将作为FreeRTOS最全教程的目录使用。 一、为什么要学FreeRTOS 1.嵌入式系统开发:FreeRTOS是一款广泛用于嵌入式系统开发的实时操作系统。它可以帮助你构建复杂的嵌入式应用程序,有效管理多个任务和资源。 2.实时性:FreeRTOS提供了实时性,允许你创建实时任务,确保任务在规定的时间内完成,适用于需要及时响应外部事件的应用,如飞行控制系统、医疗设备等。 3.多任务编程:FreeRTOS使你能够轻松创建和管理多个任务,使程序结构更清晰、模块化,有助于更好地组织代码。 4.资源管理:FreeRTOS具备资源管理的能力,包括任务、消息队列、信号量等,可...

  micz61TEX78l   2023年11月02日   50   0   0 嵌入式裸机开发.net
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~