
c语言
文章平均质量分 73
可能只会写BUG
这个作者很懒,什么都没留下…
展开
-
linux驱动开发-自旋锁
TOCTOC。原创 2024-09-15 21:01:11 · 860 阅读 · 0 评论 -
linux驱动开发-ioctl
TOCTOC在内核中,ioctl(input/output control)是一个系统调用,用于设备驱动程序和用户空间程序之间的通信。它允许用户空间程序向设备驱动程序发送命令,以执行特定的操作或获取设备的状态信息。ioctl 是一个非常灵活的接口,因为它可以根据设备类型和需求定义不同的命令。ioctl 的基本结构。原创 2024-09-15 21:00:34 · 1355 阅读 · 0 评论 -
linux驱动开发-地址映射
在Linux驱动开发中,地址映射是指如何将设备的物理地址映射到虚拟地址空间,从而使得内核可以通过虚拟地址与设备进行交互。这一过程在设备的初始化和操作中都是至关重要的,尤其是在涉及到内存映射I/O时。原创 2024-09-14 22:38:48 · 919 阅读 · 0 评论 -
Linux驱动开发-字符设备驱动开发
在 Linux 中,驱动程序主要有以下几种类型:字符设备驱动:处理字节流的设备,如串口、键盘等。它们通过字符设备接口(如 /dev/tty)与用户空间进行交互。块设备驱动:处理块存储设备,如硬盘、SSD 等。它们支持随机访问,提供高效的数据传输。网络设备驱动:用于网络接口卡,处理网络数据包的发送和接收。USB 驱动:支持 USB 设备的连接和管理。原创 2024-09-14 21:47:09 · 1256 阅读 · 0 评论 -
C/C++基本语言相关面试题
浅拷贝:浅拷贝在复制对象时,只复制对象中的基本数据类型成员和指针值,而不复制指针指向的内存内容。这意味着复制后的对象中的指针将与原对象共享同一块内存。如果某个对象被析构,而该对象的指针指向的内存也被释放,那么其他共享同一内存的对象可能会访问已释放的内存,导致未定义行为甚至程序崩溃。这种情况称为“双重释放”(double free)。在C++中,如果没有为类定义自定义的拷贝构造函数,编译器提供的默认拷贝构造函数就是浅拷贝。原创 2024-09-10 10:37:22 · 1216 阅读 · 0 评论 -
C++ RTTI 运行时类型信息
TOCTOC。原创 2024-08-06 17:28:19 · 351 阅读 · 0 评论 -
C++ 依赖倒置
TOCTOC。原创 2024-08-06 17:27:28 · 232 阅读 · 0 评论 -
C++ 继承 派生类的拷贝构造
拷贝构造,也是一种构造函数,也没有被继承下来。原创 2024-08-04 20:05:01 · 711 阅读 · 0 评论 -
C++ 指向类成员的指针
C++扩展了指针在类中的使用,使其可以指向类成员(数据成员和函数成员),这种行为是类层面的,而不是对象层面的。指向非静态数据成员的指针在定义时必须和类相关联,在使用时必须和具体的对象关联。由于类不是运行时存在的对象。因此,在使用这类指针时,需要首先指定类的一个对象,然后,通过对象来引用指针所指向的成员。指向类成员的指针,具有指针的形而不具体指针的实,或者,确切意义上说,不指是指针。指向类成员的指针,本质存放的不是地址,存放的偏移量。原创 2024-07-31 18:19:40 · 461 阅读 · 0 评论 -
C++ static关键字在类中的扩展
C++扩展了 static 在类中的语意,用于实现在同一个类,多个对象中共享数据,协调行为的目的。静态变量有全局变量的优势,又不会像全变量一样被滥用。而用于管理静态变量,就需要用到静态函数。类的静态成员,属于类,也属于对象,但终归属于类。原创 2024-07-31 18:19:21 · 300 阅读 · 0 评论 -
C++ String 字符串类
/0xf55e40//hello//初始化字符串//32//32//32//world//next//字符串再次赋值s1=s2;//next//cin输入字符串//字符串会获取输入第一个空格之前的的数据//cin>>s1;//输入的数据//使用getline函数获取输入的所有数据,包括空格//输入的数据。原创 2024-07-27 18:36:01 · 570 阅读 · 0 评论 -
C语言-TCP通信创建流程
在服务器绑定 ip 地址与端⼝号之后, 则需要让服务器 socket 套接字设置成被动监听状态,并。首先,我们需要创建套接字,套接字是通信的基础。我们可以通过 socket() 函数来创建套接字。在服务器端调用 accept 函数之后, 则可以接收客户端的连接请求, 并创建新的套接字用于数据。在服务器端调用 listen 函数之后, 则可以开始接收客户端的连接请求, 并创建新的套接字。接收数据需要调用 recv() 函数。创建套接字之后,我们需要连接服务器。连接服务器需要调用 connect() 函数。原创 2024-07-26 19:18:58 · 976 阅读 · 0 评论 -
C++内联函数
C 语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用的开销。但是由于宏函数的处理发生在预处理阶段,缺失了语法检测和有可能带来的语意差错。原创 2024-07-26 19:12:18 · 215 阅读 · 0 评论 -
C++内存申请和释放
c 语言中提供了 malloc 和 free 两个系统函数,完成对堆内存的申请和释放。而 c++则提供了两关键字 new 和 delete;原创 2024-07-25 20:01:09 · 800 阅读 · 0 评论 -
从C到C++入门篇(三)引用;引用的本质
变量名,本身是一段内存的引用,即别名(alias)。此处引入的引用,是为己有变量起一个别名。int a= 500;//变量名.实质是一段内存空间的别名(int。原创 2024-07-25 20:00:42 · 841 阅读 · 0 评论 -
从C到C++入门篇(二)函数重载,运算符重载和默认参数
C++支持函数重载,即同名函数可以根据参数的不同而有不同的实现。原创 2024-07-24 18:02:46 · 961 阅读 · 0 评论 -
从C到C++入门篇(一)新类型和标准输入输出
C 语言中 const * ->non-const* / void * ->sometype * / type-> type均是可以的,但是在 C++中则编译通不过。原创 2024-07-24 18:01:57 · 726 阅读 · 0 评论 -
非阻塞IO-多路复用select函数用法及其源代码解读
/ 定义一个结构体来存储文件描述符集合void *bits;// 指向文件描述符集合的指针// 返回值和最大文件描述符数// 文件描述符集合的大小// 文件描述符表//!栈上分配的文件描述符集合,分配数组空间,⽤于存储⽂件描述符// 初始化返回值为无效参数错误if (n < 0) // 如果传入的文件描述符数小于0,则返回错误// 读取RCU锁// 获取当前进程的文件描述符表// 获取最大文件描述符数// 释放RCU锁。原创 2024-07-23 13:45:42 · 1247 阅读 · 0 评论 -
非阻塞IO-多路复用-epoll的使用
TOCTOC。原创 2024-07-23 13:44:18 · 863 阅读 · 0 评论 -
c语言 字符串操作函数
strlen()函数用于计算字符串的长度,返回字符串的字符数。长度为11,因为它包含了11个字符。原创 2024-06-15 23:36:09 · 1525 阅读 · 2 评论 -
C语言的内存操作函数详解
程序,是经源码编译后的可执行文件,可执行文件可以多次被执行,比如我们可以多次打开 office。而进程,是程序加载到内存后开始执行,至执行结束,这样一段时间概念,多次打开的 wps,每打开一次都是一个进程,当我们每关闭一个 office,则表示该进程结束。程序是静态概念,而进程动态/时间概念。原创 2024-06-16 20:37:03 · 1186 阅读 · 0 评论 -
C语言 逆置字符串
C语言 逆置字符串。原创 2024-06-16 20:40:14 · 190 阅读 · 0 评论 -
shell编程
bin/bashvar1=123var2=abc #在shell脚本中给变量赋值的时候不能再等号前后出现空格var3='hello world' #如果值字符串中有空格需要使用单引号var4="hi $var2" #如果值字符串中有获取变量值过程使用双引号echo $var1echo $var2echo $var3echo $var4。原创 2024-06-17 19:45:35 · 336 阅读 · 0 评论 -
c语言 文件操作
行是文本编辑器中的概念,文件流中就是一个字符。这个在不同的平台是有差异的。window 平台 ‘\r\n’,linux 平台是’\n’。原创 2024-06-17 21:08:51 · 1094 阅读 · 0 评论 -
shell脚本详细用法
bin/bashvar1=123var2=abc #在shell脚本中给变量赋值的时候不能再等号前后出现空格var3='hello world' #如果值字符串中有空格需要使用单引号var4="hi $var2" #如果值字符串中有获取变量值过程使用双引号echo $var1echo $var2echo $var3echo $var4/bin/bashthenecho "有写权限"elseecho "没有写权限,添加了写权限"fi。原创 2024-06-19 19:31:41 · 1394 阅读 · 0 评论 -
C语言执行终端命令
system()函数:system()函数用来执行一个shell命令,并返回执行结果。popen()函数:popen函数是C语言标准库中的一个功能强大的工具,它允许程序与命令行命令进行交互。fork()和exec系列函数:fork()和exec系列函数是C语言标准库中的另一种执行命令的函数。fork()函数创建一个新的进程,并返回子进程的PID。exec系列函数用来替换当前进程的执行文件,并执行指定的命令。推荐使用exec系列函数来执行命令,因为它更加灵活,可以指定环境变量。原创 2024-06-20 19:32:31 · 1985 阅读 · 0 评论 -
c语言 实现栈结构
c语言 实现栈结构。原创 2024-06-20 22:35:12 · 265 阅读 · 0 评论 -
c语言的存储类型-存储类
共有两种变量存储在静态存储区:全局变量和 static 变量,只不过和全局变量比起来,static 可以控制变量的可见范围,说到底 static 还是用来隐藏的。const修饰的变量是只读变量,const修饰的全局变量在.ro data段,const修饰的局部变量在栈上。auto 存储类是默认的存储类,声明的变量将在栈上分配内存,生命周期与变量相同。register修饰的是寄存器类型的变量,在一个处理器中寄存器的个数是有限的,所以不能将所有的变量都定义成寄存器类型的变量,寄存器类型的变量比一般。原创 2024-06-21 22:37:10 · 1093 阅读 · 0 评论 -
c语言中的结构体
int age;char sex;}stu[3];int age;char sex;int age;char sex;int grade;}cls;原创 2024-06-21 22:51:01 · 257 阅读 · 0 评论 -
shell脚本if/else使用示例
【代码】shell脚本if/else使用示例。原创 2024-06-25 14:57:55 · 401 阅读 · 0 评论 -
linux的安装程序 与 文件 相关的命令
软件包中包含安装的可执行程序(binary),包含软件的说明文档,包含软件的使用的man手册等,将这些内容打包成一个软件包,可以给用户安装使用。(1).deb:ubuntu系统可以安装的包格式(2).rpm:redhat系统可以安装的包格式。原创 2024-06-25 14:59:27 · 1828 阅读 · 0 评论 -
makefile
Makefile是用来编写编译规则的文件,Makefile可以根据文件的时间戳决定文件是否参与本次编译。在大型项目中会使用Makefile做工程管理,决定本次那个文件参与编译,可以提升编译的效率。原创 2024-06-26 18:41:17 · 990 阅读 · 0 评论 -
C语言-二级指针应用场景
使用二级指针的主要目的是为了安全地管理和修改指针,避免悬挂指针问题。在函数内部,能够直接修改调用者的指针,使其指向 NULL,从而提升代码的健壮性。原创 2024-06-26 19:37:24 · 1483 阅读 · 0 评论 -
linux中find命令和exec的强大组合用法
Find 是一个已经非常强大的命令,用于根据许多条件搜索文件。exec 命令使您能够处理 find 命令的结果。我在这里分享的例子只是一瞥。find-exec 命令组合在一起为您提供了在 Linux 命令行中执行操作的无限可能。find 和 exec 命令。原创 2024-06-28 19:23:33 · 2073 阅读 · 0 评论 -
C语言 实现链表的各种功能
文件名:link_list.h}LNode;//初始化链表//链表是否为空//链表长度//链表头部插入元素//链表尾部插入元素//插入链表指定位置//链表删除元素头删//链表删除指定位置元素//删除链表元素尾删//链表中查找指定位置元素//修改链表指定位置元素//清空链表//销毁链表//打印链表链表是一种常见的数据结构,在实际应用中有着广泛的应用。本文介绍了链表的定义、实现、操作、测试等功能。原创 2024-06-29 17:18:37 · 551 阅读 · 0 评论 -
Linux多进程和多线程(一)-进程的概念和创建
进程(Process)是操作系统对一个正在运行的程序的一种抽象。它是系统运行程序的最小单位,是资源分配和调度的基本单位。原创 2024-06-29 20:16:35 · 1710 阅读 · 0 评论 -
Linux多进程和多线程(二)-进程间通信-管道用法
TOCTOC。原创 2024-06-30 12:52:35 · 1240 阅读 · 0 评论 -
Linux多进程和多线程(三)进程间通讯-信号处理方式和自定义处理函数
123456678910// 用户自定义信号1112131415161718192021。原创 2024-06-30 16:05:55 · 1089 阅读 · 0 评论 -
Linux多进程和多线程(四)进程间通讯-定时器信号和子进程退出信号
定时器类型:setitimer() 支持三种定时器类型(实际时间、用户态时间、用户态和内核态时间),更灵活。alarm() 只支持实际时间定时器。精度:setitimer() 支持微秒级精度。alarm() 只支持秒级精度。支持多个定时器:setitimer() 可以同时设置和管理多个不同类型的定时器。alarm() 只能设置一个定时器,后续调用会覆盖之前的定时器。原创 2024-07-03 11:53:54 · 1166 阅读 · 0 评论 -
Linux多进程和多线程(五)进程间通信-消息队列
TOCTOC。原创 2024-07-03 11:56:06 · 1034 阅读 · 0 评论