- 博客(27)
- 收藏
- 关注
原创 C++_智能指针
unique_ptr属于独占式智能指针,一个unique_ptr同一时间只能指向一个对象,当指针超出作用域或被重置时,指向的对象会被自动释放。
2025-08-13 17:10:39
290
原创 双向链表的删除和销毁、内核链表
错误代码实例在错误代码中,先将pTmpNode的前后节点相连(此时并没有和两个节点断开连接,如果按照节点连接的指向,依旧可以找到前后两个节点,因此在代码中选择将pTmpNode向后移动),随后让pTmpNode节点向后移动,错误之处在于,经过处理的pTmpNode的后一个节点的前一个已经变成了pTmpNode的前一个节点,在释放空间时,释放的已经不是我们所指定的空间。正确代码。
2024-08-29 20:55:33
750
原创 利用链表快慢指针对链表进行查找
快指针每次移动两个位置,慢指针每次移动一个位置,当快指针到达末尾,慢指针所指的位置就是中间节点(在快指针一次循环中移动两个位置时,移动一个位置就需要判断该位置是否为末尾位置)
2024-08-28 20:02:47
333
原创 时间复杂度、数据结构、顺序表和链表
部分程序运行所消耗的时间与其数据量的大小有着密切的关系,也有一部分的运行时间和数据量大小的关系微乎其微。以下就是时间复杂度的降序排列。2.1.1顺序表:顺序表在某种程度上与数组有相同的地方,比如顺序表的大小和数量是有限的,并且因为顺序的存在,顺序表是连续的。单项链表:链表的节点中存储节点数据和下一个节点的地址,即便链表之间的地址不连续,也可以通过头节点访问到后面节点存储的数据。以下的代码是顺序表的定义,定义一个结构体,其中包含顺序表存储的数据的首地址,存储数据的个数和最大能够存储的数量。
2024-08-27 21:52:44
276
原创 数据库(sqlite)、数据库编程
数据库(database)是用来组织、存储和管理数据的仓库。为了方便管理互联网世界中的数据,就有了数据库管理系统的概念。用户可以对数据库中的数据进行新增、查询、更新、删除等操作。
2024-08-22 22:12:45
877
原创 0820【网络编程】
select不再阻塞,同时select会将产生事件的文件描述符留在集合中,而把没有产生事件的文件描述符从。监听文件描述符集合,将所有要监听的事件加入集合中,使用select监听所有事件,当集合中有事件发生,将一个文件描述符设定为异步IO,当IO有事件发生时,内核会向用户层发送SIGIO信号提醒用户层处理事件。集合中踢出,所以留在集合中的文件描述即为产生事件的文件描述符,对其处理即可。功能:判断fd是否仍在文件描述符集合中。功能:将fd加入文件描述符集合中。功能:将文件描述符集合清0。
2024-08-20 22:10:40
309
原创 0815网络编程
子网掩码展开成二进制,1对应的部分就是IP地址的网络位,0对应的部分就是IP地址的主机位。子网掩码:每个IP地址都会搭配一个子网掩码,用来区分IP地址的网络位及主机位。私有地址:192.168.0.0 ~ 192.168.255.255。私有地址:10.0.0.0 ~ 10.255.255.255。B类:128.0.0.0 ~ 191.255.255.255。A类:1.0.0.0 ~ 126.255.255.255。子网掩码:255.255.255.0。网络位:IP地址所属的网段(局域网的编号)
2024-08-15 21:05:34
895
原创 0814消息队列、共享内存、信号灯
1.ipcs查看所有ipc对象的信息2.ipcrmipcrm -q/m/s 消息队列ID/共享内存ID/信号灯ID。
2024-08-14 20:09:19
562
原创 0811软件编程
从终端输入: SIGINT ctrl+c SIGQUIT ctrl+\ SIGTSTP ctrl+z9号和19号信号 SIGKILL 进程结束 SIGSTOP 进程挂起SIGSEGV:表示内核操作内存错误SIGUSR1:用户可以使用该信号实现通信SIGCHLD:表示该进程有一个子进程结束了SIGPIPE:表示管道破裂SIGIO:表示IO事件发生。
2024-08-11 19:40:52
733
原创 0807软件编程
原型:pid_t waitpid(pid_t pid, int *wstatus, int options);功能:回收指定的子进程空间参数:pid:要回收的子进程的pidwstatus:回收状态的指针options:回收选项0 阻塞回收:在子进程结束之后回收WNOHANG:非阻塞回收,立即回收返回值:成功:返回回收的子进程的pid失败:返回-1。
2024-08-07 21:35:01
904
原创 0801[软件编程]
在程序运行出错时,可以在头文件加上#include <errno.h>在报错的位置输入printf("%d",errno);
2024-08-01 20:37:00
499
原创 0731【软件编程】
如上图,如果将图中的char name[32]中的32进行修改,printf将会产生乱码。因为在b,txt中是以一个结构体为44个字节的标准fwrite,但如果修改fread的读取字节,就会改变结果。向流中写入nmemb个对象,每个对象size个字节,在ptr指向的空间中存放。从流中读取nmemb个对象,每个对象size个字节,在ptr指向的空间中存放。ptr:写入数据空间的首地址。nmemb:写入对象的个数。成功返回实际写入对象的个数。nmemb:写入对象的个数。成功返回实际读取对象的个数。
2024-07-31 21:01:53
535
原创 0727[C语言]
1.函数体内部的局部变量会随函数结束被回收,可以考虑存放到堆区空间中避免随函数结束回收。当使用strcat、strcpy、strcmp函数时可能会产生内存越界。应该用strncat、strncpy、strncmp函数替代。注意:操作指针时,注意指针指向的空间是否存在?4.单向链表、双向链表、内核链表、循环链表。如果成功,返回指向申请空间的指针。申请size个字节的堆区空间。size:申请空间的大小。1.数组是有限个元素的集合。申请的堆区空间没有被释放。2.数组的空间必须连续。1.链表空间不需要连续。
2024-07-28 23:40:26
345
原创 0726【C语言】
struct 结构体名 { 数据类型1 成员变量1; 数据类型2 成员变量2; 数据类型3 成员变量3; ... };如下,定义结构体名为student 结构体变量的定义 注意:变量类型为struct student!结构体变量的初始化 1.全部初始化 2.局部初始化 . :结构体变量类型访问成员变量 -> :结构体指针类型访问成员
2024-07-26 22:31:54
986
原创 0725[C语言]
如下图,我们在main函数外编写函数fun,定义一个函数指针指向fun函数,在函数jisuanqi中我们便可以把函数指针当作参数进行传递,在main函数中就可以调用函数jisuanqi,而jisuanqi中的一个参数就是函数fun。而在图二中传递的是数组指针类型,因此pdst和psrc是指针类型,当他们做自加运算后,就会移动指针指向数据类型个单位长度,图中是char型,所以移动一个字节。指针函数的本质是函数,函数的返回值是指针类型(注意:函数的返回值不能是局部变量的的地址)
2024-07-25 21:52:44
243
原创 0723【C语言】
1.数组的数组名a是指向数组第一个元素的指针常量。指针[n] == *(指针 + n)3.C语言中所有指针均可以使用[]访问空间。const == readonly 只读。数组的数组名是指向数组第一个元素的指针。指针用来操作数组中的数据。3.一维字符型数组和指针的关系。
2024-07-23 19:41:32
165
原创 0722【C语言】
2.当运算符的优先级相等时,单目+三目运算符从右至左开始结合。64位操作系统中 所有类型指针变量占8个字节。补充:1.32位操作系统中 所有类型指针变量占4个字节。
2024-07-22 21:03:46
220
原创 0720【c语言
在当前目录下查找stdio.h,如果当前目录找不到则在系统目录/usr/include目录下查找头文件。3.2 int fun(int arry[],int len):可以操作不同长度的数组。递归函数:函数定义时调用函数本身1.递归一定要有结束条件 2.避免深层次的递归。带参宏可能改变运算符的优先级!2.带参宏没有参数类型、返回值、传参的概念。3.带参宏是在程序编译阶段加载到程序中。1.函数有参数类型、返回值、传参的概念。4.函数是在程序运行阶段加载到程序中。2.头文件中存放声明的全局变量和全局函数。
2024-07-22 00:52:31
242
原创 0719【C语言】
3.实参与形参类型不一致时,会将实参强制类型转换为形参类型,传入函数中。2.定义:定义一个之前不存在的变量或函数,需要开辟新的空间。函数类型 函数名(数据类型 形参, 数据类型 形参, ...)2.代码执行到变量定义时为变量开辟空间。3.超过变量的作用域回收变量空间。被调函数在主调函数下方定义,需要声明该函数。1.声明:声明一个已经存在的变量或函数。变量从开始被创建,到空间被回收的整个过程。1.自动型存储(局部存储)(默认存储类型)2.实参可以是常量、变量、表达式。函数名(实参1, 实参2, ...);
2024-07-19 22:03:31
353
原创 20240718【C语言】
1.选择排序:将最大值设定,后通过循环控制,将最大值选出。根据规律得知,每一轮在选择最大值所需要的次数需要注意改变(递减)。2.2访问 数组名[行下标][列下标] 二维数组不可以使用变量下标访问(指针)2.3.3默认初始化 (行能省略,列不能省略)2.冒泡排序:将最大值设定,后通过循环控制,将两个相邻的元素比较,满足条件的情况下将两个元素调换位置。三、字符型数组(在c语言中没有字符串类型,所以通过字符型数组存放字符串)2.4存储(N维数组是由N-1维数组构成的一维数组)
2024-07-18 19:15:47
216
原创 20240717【c语言】
在for循环语句中遍历数组中的元素,在if条件中判断最大值和最小值在for结束后输出下标。3.3默认初始化:没有给定数组元素个数时,通过给定初值的元素个数来确定。1.break:只能在switch或者循环中使用 (跳出循环)3.2局部初始化(没有给定的值会默认为0)2.1元素个数最小值,元素下标最小值。2.continue:在循环中使用(跳出本次循环)数据类型 数组名[元素个数(常量或常量表达式)];3.1全部初始化(每个元素)数组名[下标(常量/变量/表达式)];内部循环len-1-j(从j=0开始)
2024-07-17 21:13:06
177
1
原创 20240716【C语言】
case():语句块;case(常量):switch(整形表达式)1.3嵌套分支(if语句中嵌套if语句)注意:嵌套太深影响可读性,3-5。2.break可加可不加(根据需要)case 常量:语句;1.switch后加整形。default:语句;switch(整形表达式)switch(整形表达式)1.2阶梯分支(使用else if)for循环用于积累运算,if语句用于不断地判断条件。}while(逻辑表达式)注意:while(1)死循环。while(逻辑表达式)
2024-07-16 20:56:01
245
1
空空如也
烧录uboot jflasharm
2025-05-22
mini2440 嵌入式 终端打印
2025-05-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅