自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构:队列

队列是最常见的概念,日常生活经常需要排队,仔细观察队列会发现,队列是一种逻辑结构,是一种特殊的线性表。特殊在:只能在固定的两端操作线性表只要满足上述条件,那么这种特殊的线性表就会呈现一种“先进先出”的逻辑,这种逻辑就被称为队列。由于约定了只能在线性表固定的两端进行操作,于是给队列这种特殊的线性表的插入删除,起个特殊的名称:队头:可以删除节点的一端队尾:可以插入节点的一端入队:将节点插入到队尾之后出队:将队头节点从队列中剔除。

2025-02-11 08:42:00 863

原创 数据结构:栈

只要满足上述条件,那么这种特殊的线性表就会呈现一种“先进后出 / 后进先出”的逻辑,这种逻辑 就被称为栈。由于约定了只能在线性表固定的一端进行操作,于是给栈这种特殊的线性表的“插入”、“删除”,另。基于这种固定一端操作的简单约定,栈获得了“后进先出”的基本特性,如下图所示,最后一个放入。不管是顺序栈,链式栈,栈的操作逻辑都是一样的,但由于存储形式不同,代码的实现是不同的。续的内存之外,还需要记录栈的总容量、当前栈的元素个数、当前栈顶元素位置,如果有多线。栈是一种逻辑结构,是特殊的线性表。

2025-02-08 10:04:20 669

原创 数据结构:双向链表

个节点之后,紧接着的动作往往是释放它,但是将“剔除”与“释放”两个动作分开,是最基本的函数。对链表而言,双向均可遍历是最方便的,另外首尾相连循环遍历也可大大增加链表操作的便捷性。与单链表类似,也可以对双链表中的任意节点进行增删操作,常见的有所谓的头插法、尾插法等,注意,从链表中将一个节点剔除出去,并不意味着要释放节点的内容。由于链表中的各个节点被离散地分布在各个随机的内存空间,因此销毁链表必须遍历每一个节点,个节点的时候,实质上就是将“剔除”和“插入”的动作连起来,此时就不能释放该节点了。

2025-01-17 20:36:44 738

原创 数据结构:单链表

顺序表:顺序存储的线性表。链式表:链式存储的线性表,简称链表。既然顺序存储中的数据因为挤在一起而导致需要成片移动,那很容易想到的解决方案是将数据离散地存储在不同内存块中,然后在用来指针将它们串起来。这种朴素的思路所形成的链式线性表,就是所谓的链表。

2025-01-13 08:38:20 3238

原创 数据结构:顺序表

对于一组拥有n个数据元素的线性表,其严格数学定义是:其中任何一个数据元素 ,有且仅有一 个直接前驱 ,有且仅有一个直接后继。满足这种数学关系的一组数据,当中的数据是一个挨着一个的,常被称为一对一关系。反之,如果 数据之间的关系不是一对一的,就是非线性的。生活中的线性表例子非常多,比如一个班级中的以学号编排的学生,一座图书馆中的以序号编排的 图书、一条正常排队等候的队列、一摞从上到下堆叠的餐盘,这些都是线性表。在顺序表中增加一个数据,可以有多种方式,比如在原数组的末尾增加,或者在原数组的头部。

2025-01-10 13:46:07 1237

原创 C语言:构造类型(共用体/联合体,枚举)

union 共用体名称数据类型 变量名;-- 共用体成员数据类型 变量名;...公用体的定义和结构体类似:可以有名字,也可以匿名共用体在定义时也可以定义公用体变量共用体在定义时也可以初始化成员共用体也可以作为形参和返回值类型使用共用体也可以定义共用体变量...也就是说,结构体的语法,共用体都支持注意:共用体弊大于利,尽量少用,一般很少用;共用体变量在某一时刻只能存一个数据,并且也只能取出一个数共用体和结构体都是自定义数据类型,用法类似于基本数据类型。

2025-01-06 08:44:53 2082

原创 C语言:构造类型(结构体)

方式1:常规定义(命名结构体,只定义类型)--推荐int num;// 学号// 姓名char sex;// 姓名int age;// 年龄// 家庭住址// 信息输出(函数指针)方式2:定义匿名结构体(常用于作为其他结构体的成员使用)struct Dogchar *name;// 姓名int age;// 年龄struct // 结构体中嵌套的结构体不能有名字,故被称作匿名结构体int year;// 年int month;// 月int day;// 日。

2024-12-31 08:52:42 1268

原创 C语言:指针5(野指针、空指针、空悬指针 )

void:是空类型,是数据类型的一种void*:是指针类型,是指针类型的一种,可以匹配任意类型的指针,类似与通配符,又被叫做万能指针。void:说明:void作为返回值类型使用,表示没有返回值;作为形参,表示形参列表为空,在调用的时候不能给实参// 函数定义void fun(void){..} // 等效于 void fun(){..}// 函数调用fun();void*:说明:void*是一个指针类型,但该指针的数据类型不明确,无法通过解引用获取内存中的数据,

2024-12-31 08:41:50 1582

原创 C语言:指针4(常量指针和指针常量及动态内存分配)

常量:分为字面量和只读常量,字面量就是我们平时直接操作的量:只读常量使用关键字 const 修饰,凡是被这个关键字修饰 的变量,一旦赋值,值就不能改变。

2024-12-24 13:02:34 2403

原创 C语言:指针3(函数指针与指针函数)

定义:函数指针本质上是指针,它是函数的指针(定义了一个指针变量,变量中存储了函数的地址)。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。这里函数名就代表入口地址。

2024-12-24 12:55:27 898

原创 C语言:指针2(指针变量指向数组)

引用一个数组元素,可以用:① 下标法:如 a[i] 形式。② 指针法:如 *(a+i) 或者 *(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值:p =a;案例需求:有一整型数组a,有10个元素。输出数组中的全部元素。分析:要输出各元素的值,有三种方法下标法;通过改变下标输出所有元素指针法(地址):通过数组名计算出数组元素的地址,找出数组元素值指针法(指针变量):用指针变量指向数组元素以上3种写法比较:第①种写法和第②种写法执行效率相同。

2024-12-19 08:58:39 1179 1

原创 C语言:指针1(变量指针和指针变量)

③ 如果p的初值为&a[0]则p+i 和a+i 就是数组元素a[i]的地址,或者说,它们指向a数组的第 i。② 如果p原来指向a[0],执行++p后p的值改变了,在p的原值基础上加d,这样p就指向数组的。① 如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的 下一个元素,p-1指向。但要注意的是,虽然指针变量p中存放的。* 指针运算符(或称之为“间接访问”运算符,解引用符),*p是指针变量p指向的对象的值。是地址,但p+1并不表示该地址加1,而表示在原地址的基础上加了该数据类型所占的字节数d。

2024-12-17 08:48:23 1351

原创 C语言:函数

函数:实现一定功能的,独立的代码模块。我们的函数一定是先定义,后使用。

2024-12-12 08:42:27 623

原创 C语言:字符数组相关操作

在用格式说明符%s进行输入输出时,其输入输出项均为数组名。但在输入时,相邻两个字符串之间 要用空格分隔,系统将自动的在字符串最后加结束符"\0"。在输出时,遇到结束符'\0'作为输出结 束标志。对于字符串的操作,我们需要使用到一些系统提供的函数。

2024-12-06 13:33:52 1123

原创 C语言:数组

数组是相同类型,有序数据的集合。

2024-12-06 13:19:38 992

原创 C语言:运算符2(赋值运算符、逻辑运算符、逗号运算符、位运算符)

=”称之为赋值运算符,其作用是将一个数据赋值给一个变量。如:a = 5 执行赋值运算的结果,是将右边的数据存入左边变量对应的内存单元中,赋值运算的顺序:由右向左赋值规则如果赋值运算符两侧的类型不一致,则在赋值时要进行类型转换,转换规则为:实型→整型变量:舍弃⼩数部分。⽐如:int a = 5.5;a应该是5整型→实型变量:数值不变,以浮点形式存储。字符型→整型变量:放在整型低8位。保持原值不变原则。⽐如:int a = ‘A’赋值表达式变量 = 表达式作用:将右边表达式的值赋值给左边的变量。

2024-11-28 13:42:11 959

原创 C语言:运算符1(混合运算和算数运算符)

运算时,参加运算的两个数据如果类型不同, 则⾸先将其类型转换成⼀致再运算,转换规则是: 将优先级低的类型转换到优先级⾼的类型,被称作 自动类型转换(小转大)。注意: 在混合运算过程中,系统所进⾏的类型转换并不改变原数据的类型,只是在运算过程中将其值变成 同类型后在运算。(double) a 将a的值转换成double类型(int)(x+y) 将x+y的结果转换为int类型(int)x+y 将x的值转换成int类型后与y进⾏相加(float)(5%3) 将5%3的值转换成float类型。

2024-11-28 13:20:54 847

原创 C语言:基本数据类型

用来存放整型数据的变量 我们定义一个整型的变量,C编译系统实际是在内存中分配了能够存储一个整型数据的存储空间,并用变量名来 标识这个空间,对该空间的使用也就可以通过变量名来访问。案例 :整型变量的定义和使用。整型数据在内存中的存放形式数据在内存中是⼆进制的形式存放的则⼗进制数10的⼆进制形式为1010,则内存中实际存放形式为:实际上,数据在内存中是以补码的形式表⽰的。正数的补码和原码(该数的⼆进制形式)相同负数的补码是将该数绝对值的⼆进制形式,按位取反再加1(反码+1变补码)

2024-11-27 13:24:55 1409

原创 C语言:常量与变量

/左边是long类型变量,右边是int常量,当完成赋值操作后,右边的12类型转换成long.:有32个,系统有特点的含义和用途,如:float,int,if,else等,不能用作自定义标识符(变量和函数)不管是常量还是变量都是存在内存,常量存储在常量池,变量根据情况存储,基本数据类型存在栈内存。一个类型说明语句可以同时定义多个类型的变量,各个变量之间使用逗号分隔,多个同类型变量也可以用多个类型说明。:用户定义的标识符,用来给程序中的变量、自定义函数、符号常量、数组、结构体、共用体、文件等命名。

2024-11-26 13:53:36 1462

原创 图片显示优化:噪点分析与解决方法

4. ⽅法:使⽤mmap函数采⽤内存映射的⽅式来为LCD映射⼀块特殊的内存作为LCD的显存。⽤write函数写的时候,需要内核去调⽤写函数,⽽内核调⽤需要。addr->映射内存的起始地址,NULL(表⽰由内核⾃动寻找符合要求的内存地址)⼀定的时间,但是开发板的执⾏速度⽐较快,所以,在调⽤的过程中已经显⽰上去了,但是整个调度过程。prot->映射内存的操作权限(与open的权限⼀致)中,数据有⼀部分还在内核中,没有显⽰出来,形成了堵塞)。length-> 映射内存的⼤⼩。参数2:解除映射的内存的⼤⼩。

2024-11-20 16:16:55 559

原创 ARM开发板显示图片

RGB:是由RGB三种色值构成,也就是1像素=3字节,也就是800*480的图片拥有的字节数为:800 * 480 * 3 = 1152000 字节。第2步:将图⽚⽂件⾥⾯的像素点读取出来,放到缓冲区(800∗480∗3),函数read()②原本BMP左上⻆的像素点刷到LCD左下⻆,BMP右上⻆的像素点刷到LCD右下⻆。第3步:将缓冲区⾥⾯的像素点,写进fb0⽂件⾥,函数write()// 将一个BMP图片的像素点,对齐一个LCD屏幕的像素点。第4步:关闭所有打开的⽂件,函数close()

2024-11-20 12:51:11 761

原创 文件IO-⽂件拷⻉案例

文件拷贝的实现思路是,同时打开两个文件,一个文件用来读取内容,一个文件用来写入内容。本质上就是将一个文件的数据读取出来,写入到另一个文件中。函数,但有时候代码量非常庞大或者很多时候为了代码的复用,我们会将代码抽离到多个文件中,这个时候,我们就需要自己定义文件,自己引用。很多时候,为了开发的遍历性,我们会根据业务需求,对代码进行抽取,最简单的抽取,是抽离成一个个的。

2024-11-15 16:01:58 255

原创 文件 IO

在Linux中,内核将所有的硬件设备都映射成了文件(设备文件),因此对硬件设备的操作就等同于对文件。文件描述符(fd)是一个非负整数,它本身不存储文件的任何信息,文件的信息存储在文件中(文件向量。就以图形图像的显示来说,我们需要把图片文件里面的数据,先读取出来,再写入到开发版的“lcd屏幕对。需要到这个文件里,去读取我们想要的数据,就可以获取到我们触摸的具体的位置(x和y坐标)。而文件IO就是对文件的操作。也就是对文件里面的数据进行读取和写入的操作。准的输入,1代表的标准的输出,2代表的是错误的输出。

2024-11-15 15:55:05 325

原创 C语言流程控制

② 对循环进行条件限制,如果条件表达式为非0或者true(真),就执行循环体(语句块),否则就跳出循环。② 对循环进行条件限制,如果条件表达式为非0或者true(真),就执行循环体(语句块),否则就跳出循环。do..while:先执⾏(循环体),再判断(条件表达式),不管条件表达式满不满⾜,循环体⾄少执⾏⼀。③ 多分支语句中,程序的执行是依次从上往下进行判断,如果上面的条件成立,就不执行后续的条件判断;while..:先判断(条件表达式),再执⾏(循环体),如果条件表达式不满⾜,循环体⼀次都不执⾏。

2024-11-10 14:17:29 373 1

原创 C语言基础

C文件后缀名为.cC文件有且只有一个main函数,main函数禁止调用。要使用C语言语法,首先需要引入C语言相应的库,比如系统的标准输入输出库。

2024-11-10 13:57:10 383

原创 Linux基础

2.文件存储方式不同:windows内的文件,是包含型(俄罗斯套娃),Linux内的文件,是索引型。Linux主要指的是内核(主机中的CPU),是系统的大脑。执行该操作创建并打开文件,如果文件不存在创建并打开,如果存在打开该文件。拷贝文件夹:cp 文件夹 拷贝的位置(可以是路径) -r。第三个7:其他用户组权限:读(4)写(2)执行(1)移动文件/文件夹:mv 文件/文件夹 移动的位置。第二个7:用户组权限:读(4)写(2)执行(1)拷贝文件:cp 文件 拷贝的位置(可以是路径)

2024-11-10 13:33:46 455

空空如也

空空如也

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

TA关注的人

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