
笔记
派大星有个梦想
这个作者很懒,什么都没留下…
展开
-
C/C++实现常见排序(快排,希尔,插入,选择,冒泡)
一、快速排序(不稳定排序)基本思路:确立一个基准值(一般为最左边或者最右边),定义一个left和一个right,当基准值确定为最左边时,right先移动,反之left先移动,每趟排序实现左边全部小于基准值,右边全大于基准值,递归执行,最后一趟当left大于right时排序完成。常见实现有挖坑法和双指针法;void mqsort(int *arr, int L, int R) { if (L >= R) return ; int left = L;原创 2022-04-15 21:18:55 · 1094 阅读 · 0 评论 -
C程序的存储空间布局
系统空间:为内核保留,不允许应用程序读写该区域的内容或直接调用内核代码定义的函数。内核总是驻留在内存中,是操作系统的一部分。系统中所有进程对应的虚拟地址空间的内核区都会映射到同一块物理内存上(系统内核只有一个)。命令行参数区:存储进程执行的时候传递给 main() 函数的参数,argc,argv []。环境变量:存储和进程相关的环境变量,比如:工作路径,进程所有者等信息栈(stack):存储函数内部声明的非静态局部变量,函数参数,函数返回地址等信息,栈内存由编译器自动分...原创 2022-04-11 20:20:54 · 693 阅读 · 0 评论 -
C++学习笔记5:运算符重载
一:基本概念c++中的运算符(+ - * / ....< > ... << >> ...)可以直接作用于基本类型(char ,int ,double ..)和标准库定义的类型(string...)但是这些运算符不能直接作用于我们自定义的数据类型,这个时候就要重新赋予这些运算符新的功能,使之能够直接操作我们自定义类型,这就是运算符重载。c++中所有运算符重载都是使用函数实现的,所以运算符重载的本质就是函数重载。运算符重载函数的格式如下: 返回值类...原创 2022-04-11 19:26:23 · 1257 阅读 · 0 评论 -
vescosd下vim配置及输入法自动切换
我的vim配置 "vim.leader": "<space>", "vim.easymotion": true, "vim.incsearch": true, "vim.sneak" : true, "vim.useSystemClipboard": true, "vim.useCtrlKeys": true, "vim.hlsearch": true, "vim-surround": true, "原创 2022-04-11 12:00:10 · 900 阅读 · 0 评论 -
C++学习笔记4:静态成员和常成员
静态成员 静态成员变量/属性 用关键字 static 修饰的成员变量/属性,称之为静态成员变量/属性 静态成员变量属于类,而不是属于某个具体的对象,某个类创建了多个对象,这个静态成员变量也只有一份数据, 属于类,多个对象共享它静态成员变量使用前要进行初始化操作,初始化操作只能在类外进行。类型 类名::静态成员变量名 = 初始值;不仅可以用对象名进行访问,还可以使用类名对其进行访问在类定义中,前面有static...原创 2022-04-05 19:50:22 · 2642 阅读 · 0 评论 -
Makefile使用心得总结(实现简单的外部构建)
本篇文章主要是博主日常学习中使用的Makefile的经验总结,内容跨度比较大,不建议没有接触过Maekfile的博友们食用,如果有疑问可以评论留言;一、简单的比较通用的Makefile模板适用于目标只有一个且源文件和.h文件在同一目录下的情况,大体如下:.├── Makefile├── friend.cpp├── friend.h├── main.cpp├── mystring.cpp└── mystring.hMakefile编写如下(以上述文件举例)/* 目标名原创 2022-04-03 15:42:46 · 781 阅读 · 0 评论 -
C++学习笔记3:拷贝构造和移动构造
一、拷贝构造函数1、拷贝构造函数的语法: 拷贝构造函数名字(const 类名& ) {} 拷贝构造函数名字 -> 类名 形参列表:拷贝构造函数的第一个参数必须是本类对象的 const引用。 如果还需要其他的参数,那么必须要设置默认值(c++ 11新标准)当没有实现拷贝构造函数的时候,编译器会自动生成一个,函数体内不是为空,而是执行逐个成员赋值以自己简单实现的string类来举例:cl...原创 2022-03-31 20:40:48 · 4518 阅读 · 1 评论 -
C++学习笔记2:构造函数与析构函数
构造函数一、普通构造函数构造函数是一种特殊的成员函数,它主要用于为对象分配空间,进行初始化。构造函数的名字必须与类名相同,而不能由用户任意命名。它可以有任意类型的参数,但不能具有返回值。它不需要用户来调用,而是在建立对象时自动执行。class score {public: score(int m, int f); /* 构造函数 */ void setScore(int m, int f); //inline void showScore();private原创 2022-03-29 20:59:24 · 842 阅读 · 1 评论 -
C/C++混合编程
c++是兼容c语言的:c++中可以直接调用c语言库函数,应该也要能够调用自己写的c语言函数,像这种在c++代码中调用c语言函数的形式,称之为混合编程用c开发的功能很多已经用c编译器编译成库文件了,那么库文件中的函数名已经确定下来了(c语言编译器不会进行改名操作)直接用c++代码去调用该库的某个函数,由于c++编译器的改名操作,就会因为函数名字不匹配而导致失败.例子:sum.cint sum(int x,int y){ return x+y;}--------------.原创 2022-03-29 20:15:53 · 1184 阅读 · 0 评论 -
C++重载原理
为什么C++支持函数重载,而C语言不支持?编译一个可执行文件要经过:预编译,编译,汇编,链接这些阶段原因就出在编译完之后的汇编阶段,因为在这里C++和C语言有所不同,C++会进行一个改名操作,而C语言不会:C语言编译器编译之后:名字和函数名保持一致。C++编译器编译之后:总结:1.其实归根到底,还是因为C编译器和C++编译器对函数名的修饰不同。在gcc下的修饰规则是:【_Z+函数长度+函数名+类型首字母】。2.这其实也告诉我们为什么函数的返回类型不同,不会构成函数重载,因原创 2022-03-23 15:56:26 · 1004 阅读 · 0 评论 -
C++学习笔记1:引用
引用(reference)是C++对C的一个重要扩充。变量的引用就是变量的别名,因此引用又称别名。类型 &引用名 = 已定义的变量名引用与其所代表的变量共享同一内存单元,系统并不为引用另外分配存储空间。实际上,编译系统使引用和其代表的变量具有相同的地址。引用并不是一种独立的数据类型,它必须与某一种类型的变量相联系。在声明引用时,必须立即对它进行初始化,不能声明完成后再赋值。为引用提供的初始值,可以是一个变量或者另一个引用。指针是通过地址间接访问某个变量,而引用则是通过别名.原创 2022-03-23 15:28:19 · 1168 阅读 · 0 评论 -
守护进程的编程规则(加入系统日志)和改进
守护进程:一般是指 Linux中的后台服务进程,它是一个生存周期较长的进程,如其父进程为init进程,通常独立于控制终端,即 不接受电脑用户的直接操作。守护进程是一个特殊的孤儿进程。会话(session): 会话是一个或多个进程组的集合。通常一个会话开始于 用户登录,终止于用户退出,在此期间用户运行的所有进程都属于会话进程组:每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。每个进程组有一个组长进程,组长进程的进程ID等于进程组ID。如果调用setsid()的进程不原创 2022-03-21 17:36:38 · 177 阅读 · 0 评论 -
select定时器的简单实现
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); void FD_CLR(int fd, fd_set *set);//从指定的文件描述符集合中删除指定文件描述符fd int FD_ISSET(int fd, fd_set *set);//判断文件描述符fd 是否存在于文件描述符集合set中 void...原创 2022-03-21 17:17:32 · 992 阅读 · 0 评论 -
mmap函数使用实例
NAME mmap, munmap - map or unmap files or devices into memorySYNOPSIS #include <sys/mman.h>/* 映射,返回值为映射到的最终地址。addr: 目标内存空间 放到当前进程空间的起始地址,若为空,则函数自己找可用的位置length:需要映射目标空间的长度port : 映射过来的内存属性,即可以对该内存做什么操作,即映射后的操作权限 PROT.原创 2022-03-21 17:10:11 · 513 阅读 · 0 评论 -
sigaction函数的使用和优点
NAME sigaction, rt_sigaction - examine and change a signal actionSYNOPSIS #include <signal.h> int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);signum: 所要操作的信号.原创 2022-03-13 21:39:41 · 675 阅读 · 0 评论 -
信号的响应过程
内核为每个线程都维护了 两个位图:mask和pending信号屏蔽字 mask:用来表示当前信号的状态,mask初始值一般全部都是1pending位图: 用来记录当前进程收到哪些信号,一般初始值全部都是0在程序运行时间片耗尽时,被内核的中断机制打断时,程序保存当前的执行现场,进入到内核态的就绪队列等待就绪,当再次获取时间片时,从内核态回到用户态期间程序会将mask位图 按位与上pending位图来判断是否接收到信号,当没有信号时,位图结果为0,表示没有收到信号,程序回到之前的执行现场...原创 2022-03-13 21:16:51 · 1313 阅读 · 5 评论 -
select函数缺陷分析
与poll和epoll不同,select函数是事件为单位组织文件描述符,监视的行为较为单一。函数原型:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);1、每次调用都需要重新设置fd_setselect中布置监视任务的位置和返回监视的结果位置存放在同一空间,一旦监视行为发生,函数返回,其它集合会被清空。2、频繁的从用户态切换内核态进行拷贝,效原创 2022-03-10 23:24:52 · 707 阅读 · 0 评论 -
Posix标准有名信号量和无名信号量的使用
一、有名信号量 在文件系统中有一个名字 即有一个对应的inode节点 ,但是信号量的内容(值)确实存在于内核中 ,一般可以用于任意线程或进程间。 有名信号量的操作一般有: sem_open sem_wait/sem_post sem_close sem_unlinksem_t *sem_open(const char ...原创 2022-03-04 16:12:50 · 797 阅读 · 0 评论 -
Linux下c实现ls
主要功能及实现:1,使用命令行参数分析,暂时只支持 -l -a -n ,可混合使用或不使用2,对于隐藏文件目前只考虑 . 和 ..源代码如下:/************************************************************** > File Name: myls.c > Author: LuoLiang > Mail: 1204553475@qq.com > Created Time: 2022年01.原创 2022-01-16 16:50:39 · 631 阅读 · 0 评论 -
linux下c语言用mplayer实现简单的音乐播放器
主要功能及实现:1,播放,暂停及继续,上一页下一页,上一首下一首和退出2,以简单的并发来实现顺序播放等功能3,可根据不同格式导入歌曲4,ANSI控制码实现简单的界面制作缺点:1,未处理歌名太长覆盖界面的问题2,上一页,下一页只经过简单处理,不是很方便以下只对几个关键代码单独展示,完整源代码见文章末尾:一、带路径的歌曲名导入链表利用glob函数解析目录下的音乐名字并导入链表/* 歌曲路径和名字导入链表 */static LList_st *loading原创 2022-01-16 16:43:06 · 9728 阅读 · 5 评论 -
vi/vim基本命令和操作
vi/vim vi/vim是linux中最基本、最常用、功能非常强大的命令行编辑器 vim是vi的一个升级版本 vi有两种工作模式: 命令模式: 键盘上所有的输入字符都被当做是一个命令(快捷键) 如: 用vi打开一个文件,按d键,并不会有d的字符出来 此时d被当做是一条命令 输入模式: 键盘上所有的输入字符都被当做...原创 2021-12-30 11:43:11 · 550 阅读 · 0 评论 -
Linux下c语言实现有色界面俄罗斯方块
本文俄罗斯方块实现主要思路:把方块看做一个4x4的小数组在规定界面(看做一个大数组)内移动,用简单的信号控制并发,做到方块边下落边响应键盘的操作。本代码运用ANSI控制码来实现方块和界面的上色,提供从文件读取并更新历史最高分,暂停游戏,根据等级加快方块下落速度等功能,具体效果如下图所示:本文为博主第一次发表文章,不懂的地方可以留言,都会回复,喜欢的可以点赞收藏,代码不足的地方欢迎大家提出建议和改进方法 ,大家共同进步,以下为代码实现:函数声明:#ifndef GAME_H__#de.原创 2021-12-29 15:15:12 · 5220 阅读 · 9 评论