自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux下的网络编程:TCP(传输控制协议)编程

1. 面向数据包2. 无连接3. 尽最大努力交付,不安全不可靠(数据丢包、数据乱序)4. 机制简单,资源开销小,数据实时性高5. 可实现一对一、一对多的通信。

2025-08-26 17:55:23 786

原创 linux下的网络编程:基础概念+UDP编程

目的:实现不同主机,进程间的通信。

2025-08-23 11:29:34 875

原创 linux应用软件编程:线程

线程间同步机制:让多个线程在执行某个任务时,具有先后顺序的执行。死锁指的是在多线程环境中,每个执行流(线程)都有未释放的资源,且互相请求对方未释放资源,从而导致陷入永久等待状态的情况。

2025-08-18 19:11:41 2049

原创 linux应用软件编程:进程(回收资源空间)+函数族

file:需要执行的可执行文件的名称(系统路径下已有的文件)arg : 执行该可执行文件时需要传递的参数。path:要执行的可执行文件的路径和名称。arg:执行该可执行文件时需要传递的参数。功能:从PATH指定的系统路径下寻找该可执行文件。将文本去的指令代码替换成exec要执行的文件的指令。只有execl可以调用自己的程序,其余函数只能调用系统的命令。p:path 路径 : 系统路径。3. 别名:ll (ls -l)1. 内核内置命令:cd。v:vector 容器。l:list 列表。

2025-08-15 20:26:09 1051

原创 UI技术:frame buffer技术的应用

帧缓冲、帧缓存技术,是 Linux内核专门为图形化显示提供的一套应用程序接口。

2025-08-15 12:26:56 416

原创 linux应用软件编程:多任务(进程)

2.函数的形参和返回值;getppid():获取当前进程父进程的PID号。子进程拷贝父进程PCB(进程控制块)块中的部分内容:PID不拷贝。2. 让该进程成为一个孤儿进程,结束时被操作系统中的系统进程回收。由第一张图片中可以看出20429进程一开始是在R+运行状态,执行kill相关命令,其进程被杀死。孤儿进程:父进程先消亡,其对应的子进程成为一个孤儿进程,会被系统进程所收养。exit (非0) :由于进程产生了某种问题,需要主动退出进程。一个正在运行的程序称为一个进程,其运行过程中需要消耗内存和CPU。

2025-08-14 20:30:15 1989

原创 文件操作:文件IO操作流程及各类函数应用+标准IO与文件IO区别

文件IO是Linux内核专门为应用层提供的文件操作方法。 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);功能:打开文件并获得一个文件描述符参数 遵循 Linux 文件权限规则(如 对应八进制 , 对应 ),用于创建新文件时设定初始权限 。 3.返回值 成功:返回文件描述

2025-08-12 19:05:52 2002

原创 文件操作:fgets与gets区别+fread/fwrite +流定位接口

➡SEEK_CUR:从当前位置进行偏移。➡SEEK_END:从末尾进行偏移。whence--定位的相对位置➡SEEK_SET:从头进行偏移。nmemb-希望从文件中读取的元素个数。stream-要读取的文件的文件流指针。stream-要写入的文件流指针。nmemb-要写入的元素个数。size-每个元素的字节数。size-每个元素的字节数。通过运行程序可知,其偏移量可正可负。offset--偏移量。printf("磁盘空间不足\n");rewind(fp);

2025-08-11 21:00:25 859

原创 数据结构:树+二叉树+时间复杂度

n(n >= 0)个结点的有限集合,n=0为空树。当n> 1时,其余结点可分为m个互不相交的有限集合T1,T2,~Tm。n个结点的有限集合,集合要么是空集,要么是由一个根结点和两颗互不相交,分别称之为根结点的左子树和右子树的二叉树组成。如果某个结点只有一个子树,也要区分左,右子树。时间复杂度是衡量算法执行时间随输入规模增长而变化的度量,表示算法运行时间的上限。从根开始,根为第一层,根的孩子为第二层,以此类推。在这棵树中,最大的的结点的度数,称为树的度数。总操作次数:n次printf → T(n) = n。

2025-08-08 19:07:29 759

原创 数据结构:指针+链表+队列+栈

offset_of:计算链表节点在数据结构体中的偏移量。

2025-08-08 07:08:28 864

原创 单向链表练习:查找中间结点+倒数结点+逆序+插入法排序+循环链表

循环链表是一种特殊的链表,其最后一个节点的。二、查找k为倒数第N个结点,返回该结点的地址。二、查找中间结点(运用快慢指针法)一、内存探测工具valgrind。,而是指向头节点,形成一个闭环。2. 检测是否存在内存泄漏。2.link.c程序。5.main函数测试。

2025-08-08 06:36:45 961

原创 C语言:Makefile工具使用+双向链表应用(创建+插入+删除+查找+修改+销毁+遍历)

link.c文件link .h文件int id;int score;}DNode_t;int clen;}DLink_t;#endifmain.c文件return -1;return 0;

2025-08-08 06:30:52 937

原创 数据结构:哈希表

哈希表(散列表)是一种通过键值对直接访问数据的存储结构,其核心是通过哈希函数建立关键字与存储位置的映射关系,从而实现 O (1) 级别的平均查找效率,广泛应用于缓存、字典、数据库索引等场景。HashData:根据需求定义,此处以 “姓名 + 电话” 的通讯录场景为例。HashNode:链表节点,用于存储单个数据及指向冲突元素的指针。HashTable:封装哈希表的核心信息,包括存储槽位的数组、容量和元素计数,便于管理和扩展。

2025-08-08 06:28:18 481

原创 C 语言指针与内存操作

指针数组是 **“存储指针的数组”**,常用于管理多个字符串(或不连续内存块)。// 指针数组:每个元素是 char*(字符串首地址)// 输出:24(64位系统中,每个指针占8字节,3个指针共 3×8=24)printf("指针数组大小: %lu\n", sizeof(s));return 0;内存特点数组s存储的是字符串首地址"Hello"等字符串实际存在常量区)。指针数组本身在栈上,而字符串内容在常量区(或堆区,动态分配时)。

2025-07-31 08:25:24 649

原创 C语言:指针

数组指针是一个指针变量,专门指向一个数组,它存储的是数组的首地址。指针数组是一个数组,其每个元素都是指针变量,这些指针可以指向相同类型的数据。指针函数是指返回值为指针类型的函数,其本质是一个函数,只是返回结果是某块内存的地址。

2025-07-30 07:17:40 746

原创 C语言指针与排序算法

sizeof(p) 结果是指针大小(64 位系统通常为 8 ), strlen(s) 和 strlen(p) 结果是字符串实际长度(5,不计 '\0' ), sizeof(s) 是数组总大小(100 )。- begin 从数组起始逐步向后遍历到 end ,每次让 begin 指向元素与 p 指向元素比较,若 *begin > *p ,交换两者值,确保 begin 位置始终是当前遍历区间的最小元素。,计算 p - q 会编译报错,需保证基类型一致才能正确运算。

2025-07-29 07:34:58 863

原创 C语言:作用域、生存期与多文件工程化开发

(1).局部作用域:变量定义在函数或代码模块(如:if,for等)内,仅在该范围有效,出范围则“失效”。在fun.c的命令行输入 sp fun.h //此指令可在fun.c文件上方分屏一个fun.h文件,用来存放声明。在main.c命令行输入 :vsp fun.c //此指令创建了一个垂直分屏的fun.c的文件。(2).全局作用域:变量定义在所有函数外(代码最外层),作用域从定义处到本文件结束,可跨函数访问。若要在 main.c 用 fun.c的变量/函数,需在main.c中包头文件。

2025-07-25 23:58:46 639

原创 C语言:二维数组的定义与引用

需注意 int a[3][4]和a[3][4]的区别,前者a[3][4]定义a数组的维数和各维的大小,而后者a[3][4]中的3和4是数组元素的下标,a[3][4]代表行序号为3、列序号为4的元素。例如:a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13};

2025-07-24 00:12:34 1032

原创 C语言编程:字符数组

3)fgets(s,sizeof(s),stdin):会读取换行符 \n 并存储在字符串中,若越界访问时,输出结果则会为正确字符长度的任意字符。2>.字符数组内的总长度要比所表示的有效字符的个数加一,因为其中包含了一个空字符'\0',其表示字符串的结束,会被隐藏在字符串的末尾。<注意>:s1 不能直接和s2直接比较,其s1>s2表示的是s1和s2的地址的大小,而不是其字符串的大小。

2025-07-23 00:29:13 864

原创 C语言程序设计

当多个逗号表达式赋一个值时,其输出结果为最后一个表达式,但由于逗号运算符时级别最低的,因此,需要结合其他运算符的优先级进行具体分析。当为%m,nf格式:指输出的数据共占m列,其中小数有n位,如果数值长度小于m,则左端补空格。当为% -m,nf格式:指输出的数据共占m列,其中小数有n位,如果数值长度小于m,则右端补空格。一般格式:printf(格式控制,输出表列)//例:printf("%d,%c\n",i,c)。

2025-07-18 07:22:30 1029

原创 C语言运算符及数据运算

本文摘要: 字符变量特性:多字符常量赋值时,仅保留最后一个字符(如'AB'输出B)。 转义字符详解: 常用转义符功能(\n换行、\t制表符占8字节位、\b退格等) 示例说明\t制表符规则(补齐至8字节倍数) \b和\r的特殊效果(覆盖修改和行首重置) 运算符特性:所有表达式均具有明确的数据类型。 (注:原文技术细节较多,摘要保留核心规则和典型示例,去除了重复的代码展示部分)

2025-07-17 07:27:13 930

原创 深入拆解C语言的 数据类型与变量的底层逻辑

1.存储大小:固定 1 字节(8 位),可细分为 signed char (默认,范围 -128 \sim 127 )和 unsigned char (范围 0 \sim 255 )。- 有符号整型用补码存储,最高位为符号位(0 正、1 负),通过“反码 + 1”规则表示负数,实现减法转加法(如 5 - 3 = 5 + (-3) )。1. 十进制转二进制: -0.625 = - (0.5 + 0.125) = - (2^{-1} + 2^{-3}) ,二进制为 -0.101。

2025-07-15 23:39:02 822

空空如也

空空如也

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

TA关注的人

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