自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络:3.TCP通信

本文概述了TCP协议的操作流程和关键函数接口。TCP通信流程包括:发送端通过socket、connect、send、recv和close操作,接收端通过socket、bind、listen、accept、recv、send和close操作。详细介绍了socket、connect、listen、accept、send和recv等核心函数的功能、参数及返回值。同时对比了UDP与TCP的差异:UDP包头更小(8字节)、机制简单、资源开销小;而TCP包头较大(至少20字节)、机制复杂,包含三次握手、四次挥手、确认机

2026-03-05 00:18:04 296

原创 网络:2.UDP通信

本文介绍了套接字编程基础与Wireshark抓包工具的使用。主要内容包括:1)套接字核心函数如socket()、sendto()、recvfrom()等的功能参数说明;2)字节序转换函数htons()和IP地址转换函数inet_addr();3)UDP数据包8字节头结构;4)Wireshark安装步骤及常用过滤规则设置方法。重点阐述了UDP套接字编程相关API接口的功能参数及返回值,并简要说明了网络抓包工具Wireshark的基本使用方法。

2026-03-05 00:06:57 486 1

原创 网络:1.概念、配置及命令

本文介绍了网络协议的基本概念和TCP/IP协议模型。主要内容包括:1.协议是通信双方约定的标准,TCP/IP模型分为应用层(HTTP、DNS等协议)、传输层(TCP/UDP协议)、网络层(IP协议)和网络接口层;2.重点讲解了IP地址分类(A-E类)、子网掩码作用及局域网通信原理;3.对比了虚拟机的桥接和NAT两种网络模式特点;4.介绍了常用的网络配置命令ifconfig和ping的使用方法。文章系统梳理了计算机网络基础知识和实用技术要点。

2026-03-04 23:56:29 350

原创 线程及进程间通信

本文摘要:文章详细介绍了线程和进程间的通信机制。线程部分重点讲解了互斥锁的使用(初始化、加锁、解锁、销毁)及信号量同步操作,通过示例代码展示了如何避免资源竞争和实现线程同步。进程部分阐述了管道(无名/有名)和信号的通信方式,包括管道特性、信号处理方式(缺省、忽略、捕捉)及相关函数接口(signal、kill、alarm等)。文章通过代码实例演示了进程间通信的具体实现方法,为多线程/进程编程提供了实用参考。

2026-02-25 19:51:10 711

原创 进程和线程

本文摘要:文章系统介绍了进程和线程的核心概念。在进程部分,详细讲解了进程管理命令(top/ps/kill等)、虚拟地址空间布局、调度算法(时间片轮转/优先级调度等)、7种进程状态(R/S/D/Z等)及相关系统调用(fork/wait/exec等)。线程部分阐述了线程与进程的区别,包括资源共享特性、调度机制等,并介绍了线程创建(pthread_create)和回收接口。全文通过对比多进程和多线程的优缺点,帮助读者理解两种并发编程方式的适用场景,为系统编程提供了全面的理论基础和实践指导。

2026-02-10 19:58:29 655

原创 时间相关接口

本文介绍了C语言中处理时间的几个关键函数:time()获取1970年1月1日至今的秒数;localtime()将秒数转换为包含时区的日历时间(tm结构体);mktime()将日历时间转换回秒数。通过示例代码演示了获取当前时间、格式化输出时间以及计算两个时间点间隔(86400秒即1天)的方法。这些函数共同构成了C语言处理日期时间的基础功能。

2026-02-10 19:16:18 61

原创 IO编程:2.文件IO

本文摘要:文件IO与标准IO的主要区别在于缓存机制和适用场景,标准IO适用于普通文件而文件IO适用于设备文件。介绍了系统调用与库函数的关系,默认打开的文件描述符(0-2)及其特性。详细解析了文件IO接口函数:open()的参数flags选项、close()、write()、read()和lseek()的功能与用法。最后通过图片拷贝示例演示了文件IO操作流程,包括打开、读写和关闭文件描述符的实现。

2026-02-09 19:50:55 710

原创 IO编程:3.目录IO

摘要:本文介绍了Linux系统中常用的目录操作函数,包括opendir()、closedir()、readdir()、mkdir()、rmdir()、chdir()和getcwd()等函数的使用方法和参数说明。重点展示了递归遍历目录的示例代码,通过opendir()打开目录,readdir()读取目录项,并递归处理子目录。这些函数提供了完整的目录操作功能,可用于实现文件系统管理工具的开发。

2026-02-09 19:49:37 64

原创 IO编程相关知识

本文介绍了Linux系统中的I/O操作概念和标准I/O函数接口。主要内容包括:1)I/O基本概念,说明Linux中"一切皆是文件"的设计思想,详细分类了7种文件类型;2)标准I/O库的使用,包含文件打开模式、缓存类型(全缓存/行缓存/不缓存)及默认打开的3个标准流;3)重点介绍了15个常用标准I/O函数,包括fopen/fclose等文件操作函数,fputc/fgetc等字符I/O函数,fputs/fgets等字符串I/O函数,以及fprintf/fscanf等格式化I/O函数;4)说明

2026-02-06 20:43:11 1044

原创 常见的排序和查找算法

该代码实现了一个排序算法库,包含冒泡排序、选择排序、插入排序、希尔排序和快速排序等多种排序方法,以及折半查找功能。sort.h头文件定义了函数接口,sort.c实现了各排序算法和查找功能,main.c演示了使用方法。程序首先生成随机数组,然后分别调用不同排序算法进行排序并输出结果,最后支持输入数据执行折半查找。排序算法实现包括数组元素交换、最小值查找、增量排序等典型方法,快速排序采用递归实现。

2026-02-05 20:32:13 67

原创 Linux软件编程:Shell命令

本文介绍了操作系统的基本概念和Linux系统的常用命令与Shell编程基础。操作系统作为软件层,屏蔽硬件差异为应用提供统一接口。Linux系统由内核、Shell和库函数组成。文章详细列举了文件操作(ls、mkdir等)、查看命令(cat、grep)、权限管理(chmod)、压缩解压(tar)等常用命令的使用方法。在Shell编程部分,阐述了脚本开发流程、变量类型(环境/位置/自定义变量)、流程控制(if/case分支、for/while循环)等核心概念。特别强调了Shell作为解释型语言的特点,适合系统管理

2026-02-05 20:31:31 1100

原创 数据结构:5.哈希表

本文介绍了哈希表的基本原理与实现。哈希表通过哈希函数将键映射为固定索引,实现O(1)时间复杂度的数据操作。针对哈希冲突,采用链地址法解决。文章详细阐述了哈希函数应具备确定性、高效性和均匀性三大特性,并分析了不同情况下的时间复杂度。随后给出了C语言实现的哈希表代码,包含创建、插入、查找、打印和销毁等核心功能,其中使用取模运算作为简单哈希函数,链表处理冲突。最后通过主程序演示了随机数据插入和查询操作。该实现展示了哈希表的基本工作机制及其高效查找特性。

2026-02-03 22:19:21 83

原创 数据结构:4.二叉树

本文介绍了二叉树的基本概念和实现方法。主要内容包括:1)树形结构的基本术语(节点、度、层等)和二叉树特性;2)二叉树的两种特殊形态(满二叉树和完全二叉树);3)四种遍历方式(前序、中序、后序的递归/非递归实现,以及层序遍历);4)C语言实现的二叉树操作代码,包括创建、遍历、销毁等功能。文中提供了完整的头文件和源文件代码,实现了递归与非递归的遍历算法,并包含队列和栈的应用实例。该实现涵盖了二叉树的核心操作,可作为学习树形数据结构的参考范例。

2026-02-02 20:13:33 198

原创 数据结构:3.栈和队列

本文介绍了栈和队列两种基本数据结构的概念及实现方式。栈遵循先进后出原则,分为顺序栈和链式栈,实现了创建、入栈、出栈、判空/满和销毁等操作。队列遵循先进先出原则,包括循环队列和链式队列,实现了创建、入队、出队、判空/满和销毁等功能。文中提供了完整的C语言实现代码,包含头文件定义、核心功能函数和测试主程序。两种数据结构都通过指针操作实现动态内存管理,并提供了完善的错误处理机制。

2026-02-02 19:22:11 481

原创 数据结构:1.概念及顺序表

摘要:程序由数据结构和算法构成,数据结构包括逻辑结构(线性、树形、图形)和存储结构(顺序、链式等)。程序效率通过时间复杂度和空间复杂度衡量。顺序表是常见的线性存储结构,本质为数组,通过堆区空间存储数据。示例代码展示了顺序表的创建与销毁操作,使用malloc分配内存,free释放内存。时间复杂度分为O(1)、O(n)等不同等级,空间复杂度同理。不同的存储结构在元素访问、插入删除效率等方面各有优劣。

2026-01-29 20:11:42 409

原创 数据结构:2.链式表

本文介绍了三种链表结构及其实现方法。主要内容包括: 单向链表:详细讲解了创建、头插/尾插、删除、查找、修改等基本操作,以及查找中间节点、倒置链表、冒泡排序和选择排序等高级操作 双向链表:实现创建、头插/尾插、删除、查找、修改和销毁等功能 循环链表:实现创建、头插/尾插、删除和销毁操作 文章通过C语言代码详细展示了每种链表的实现细节,并比较了数组和链表的区别: 数组空间连续而链表可以不连续 数组元素有限而链表理论上无限 数组插入删除效率低但访问方便 链表插入删除高效但访问不便 代码示例完整,包含头文件、实现文

2026-01-29 20:11:34 476

原创 内存常见问题调试方法

本文总结了C语言程序调试方法和常见内存问题解决方案。主要内容包括:1)程序错误分类:语法错误和逻辑错误;2)调试方法:打印法和gdb调试;3)内存问题调试:内存越界、段错误和内存泄漏的处理方法;4)介绍了valgrind工具安装步骤。重点讲解了gdb调试工具的使用方法,包括编译选项设置、core文件配置等,并针对不同内存问题提供了具体的解决方案。

2026-01-26 21:29:57 572

原创 多文件编程及Makefile使用

本文介绍了多文件编程结构和Makefile工程管理工具的使用。主要内容包括:1)多文件编程的基本组成;2)Makefile语法规则和变量使用(系统变量和自定义变量);3)Makefile中的四种赋值方式;4)gcc编译选项详解;5)Makefile常用的三个格式替换函数(wildcard、patsubst、notdir);6)动态库和静态库的区别及特点。最后给出了一个实际的Makefile示例,展示了目标文件定义、依赖关系、编译规则以及伪目标(clean、install等)的实现方法。

2026-01-25 21:38:03 492

原创 C语言:8.内存管理

若原有空间后无足够空间,则另找一个新空间使用,返回新地址,原空间销毁(释放)功能:为num个大小为size的元素开辟一块空间,并将每个字节初始化为0。功能:调整原内存空间大小的基础上,将原来内存中的数据移动到新的空间。若ptr指向空间不是动态开辟的,则free行为未定义。成功返回申请到的堆区空间的首地址。4).不能使用free释放动态开辟内存的一部分。3).不能对非动态开辟空间进行free释放。功能: 释放堆区空间(动态开辟的内存)参数: size: 申请空间的字节数。参数: 申请到的堆区空间的首地址。

2026-01-25 21:32:23 254

原创 C语言:7.构造数据类型

struct 结构体名数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;……char sex;int age;int score;int year;int mon;int day;int hour;int min;int sec;

2026-01-22 20:35:19 596

原创 C语言:6.指针(2)

本文系统总结了C语言中指针的核心知识点,包括函数指针与指针函数的区别、const修饰指针的用法、二级指针的应用场景、void和volatile关键字的特性、数组指针与指针数组的区分、二维数组的传参方式等。重点讲解了函数指针实现排序算法和计算器的实际应用,const修饰指针的四种形式及其使用场景,二维数组的多种访问方式以及数组指针的传参技巧。通过代码示例详细演示了指针操作字符串函数、二维数组元素访问等典型用法,为深入理解指针提供了全面参考。

2026-01-20 19:51:10 430

原创 C语言:6.指针(1)

本文系统介绍了C语言中指针的核心概念与应用。主要内容包括:1)指针的基本概念,指出指针即内存地址,指针变量用于存储地址;2)关键运算符&和*的使用方法;3)指针变量的定义与初始化注意事项;4)直接和间接两种内存访问方式;5)指针的算术运算规则;6)指针作为函数参数的用法;7)指针与数组的关系,包括数组名作为指针常量的特性。文中通过多个代码示例详细演示了指针操作数组、指针传参等典型应用场景,并特别强调了野指针和空指针的处理要点。

2026-01-19 20:16:02 781

原创 C语言:5.函数

本文系统介绍了C语言函数相关知识,包括:1.函数的基本概念、功能和分类(库函数/自定义函数);2.自定义函数的定义、调用和声明方法;3.形参与实参的区别及变量作用域;4.四种函数传参方式(值传递、全局变量、数组、字符串);5.函数的嵌套调用和递归调用实现;6.预处理命令的特点和使用。文中通过大量实例演示了字符串处理函数模拟、阶乘递归计算等典型应用,并附有扫雷游戏案例参考。内容涵盖函数从基础到进阶的完整知识体系,适合C语言学习者系统掌握函数编程技术。

2026-01-16 20:36:29 989

原创 C语言:4.数组

本文介绍了C语言中数组的基本概念和使用方法。主要内容包括:1)数组分为一维、二维和多维数组;2)一维数组的定义、初始化、存储特性及常见操作(求最大值、逆序、排序等);3)二维数组的定义、初始化、存储方式(按行连续存储)及使用方法;4)常用字符串处理函数如strlen、strcpy等的使用注意事项。文章通过代码示例演示了数组的各种操作,并强调数组的连续性、有序性和单一性特点。

2026-01-14 19:30:43 607

原创 C语言:3.流程控制

程序结构分为顺序、分支和循环三种。顺序结构按语句顺序执行;分支结构包括if和switch两种形式,if支持简单、阶梯和嵌套分支,switch要求整型表达式;循环结构包含for、while和do-while三种形式,其中for循环在开始时执行初始化语句,while先判断条件,do-while先执行后判断。break用于跳出循环或switch,continue用于跳过本次循环。这三种基本结构共同构成了程序流程控制的基础。

2026-01-12 19:14:13 440

原创 C语言:2.常见输入/输出函数

本文简要介绍了C语言中常用的输入输出函数及其用法。主要内容包括:1) putchar和getchar用于单个字符的输入输出;2) printf和scanf实现格式化字符串的输入输出,支持多种格式控制符(如%md、%.nf等);3) puts和gets用于字符串的输入输出。文章还通过实例说明了scanf函数中格式控制符的特殊用法(如%*d跳过输入)和注意事项(如%c前需加空格过滤回车)。这些基础函数使用时需要注意格式规范,实际应用中可能因理解不足或定义不清导致问题,需要积累经验。

2026-01-10 20:20:40 385

原创 C语言:1.基本数据类型、运算符、表达式

本文摘要: C语言数据类型与运算符系统讲解。基本数据类型包括整数、浮点数、字符、布尔等类型,详细说明其存储空间、值域范围和存储方式。常量分为整型、浮点型、字符型等,变量需先定义后使用。运算符系统涵盖算术、赋值、关系、逻辑、位运算等9大类,重点解析自增自减、三目运算符等特殊用法,并说明隐式/强制类型转换规则。全文通过代码示例演示各数据类型的定义使用和运算符的具体应用场景,为C语言基础语法学习提供全面参考。(149字)

2026-01-09 18:37:49 1041

原创 Linux基础补充及C语言基础

本文介绍了Linux编译流程和C语言基础概念。Linux编译包含预处理、编译、汇编、链接四个步骤,使用gcc命令可完成全过程。C语言部分讲解了数据单位(位、字节等)、进制转换方法(二/八/十六进制转十进制)、补码表示(正数补码为原码,负数补码为反码加1)。重点说明了有符号数在内存中以补码形式存储的原理,并提供了详细的进制转换示例。

2026-01-08 19:20:07 1036

原创 Linux基础

本文介绍了Linux系统的基础知识:1. Linux采用树形目录结构,根目录包含bin(二进制文件)、boot(启动文件)、dev(设备文件)等标准子目录,区分绝对路径和相对路径的概念。2. 系统命令操作包括终端使用技巧、用户权限管理、文件操作命令(ls/mkdir/rm等)及文件类型说明。3. C语言开发流程涉及vim编辑器使用(gcc编译执行),展示了从编写代码到运行程序的完整过程。文章系统梳理了Linux的文件结构、常用命令和开发环境配置要点。

2026-01-07 20:35:31 1026

原创 初识C语言——数组

用于存放一组相同类型元素的集合。

2024-02-01 19:36:53 411 1

原创 初识C语言——猜数字游戏

陈列如下,而后附有编译说明,最后附有运行结果。若放在主体之后,需要在主体前进行声明。有问题可以发在评论区或者与作者私聊。这个游戏由VS使用C语言编译。涉及分支循环语句及自定义函数。如上,为所需头文件。如上,为自定义函数。

2024-01-31 19:17:58 460

原创 初识C语言——扫雷小游戏

其上为两个自定义函数,其中"game()"中又包含大量自定义函数,都在game.c中。如上,将使用库函数所需的头文件和定义的数值以及自定义函数的声明放在头文件(game.h)中,在源文件中直接应用game.h即可。这个小游戏由VS使用C语言编译,总计两个源文件(zhuti.c和game.c)和一个头文件(game.h)。分析扫雷游戏,使用二维数组代替棋盘,需要两个二维数组,一个用于布置雷,另一个用于展示并排除雷。pai() : 排除雷,需注意"bian()",为自定义用于展现排除区域周边的雷的个数的函数。

2024-01-30 21:43:45 951 1

原创 初识C语言——分支循环语句

先执行循环语句一次,而后判断表达式的条件,条件成立,则再次执行一次循环语句,循环往复,直至表达式的条件不成立,则终止循环。循环开始时,先判断表达式的条件是否成立,如果成立则执行循环语句一次,一直重复,直至表达式的条件不成立时,终止循环。然后判断表达式的条件,条件成立,则执行一次循环语句,而后执行语句2,循环往复,直至表达式的条件不成立,则终止循环。如要使用多条语句,则需使用{······}将循环语句进行包裹,构成语句块。如要使用多条语句,则需使用{······}将循环语句进行包裹,构成语句块。

2024-01-24 14:37:02 427 1

原创 初识C语言

当然,既然学习了C语言,势必要向编程的更深处前进,不只是出于已经上路的顺水推舟,更为了将未知变为有知的那一瞬间清明。正如一句古话:“朝闻道,夕死可矣。”人的一生本就是一场探索未知的旅程,我们不断在迷雾中摸索,或许有前人留下的信标,或许只能独自匍匐前行,没有终点,亦不在乎终点,只求路上的感悟。而编程于我来说,便是一片被大雾笼罩着的景色,终其一生也难得见其全貌。只能尽力,达到可以用C语言编写简单的小程序即可。至于如何学习,看看网课,多做些习题,每周花费十小时左右。如果另有需要,可以再投入些精力,以求精进。

2024-01-16 20:51:22 433

空空如也

空空如也

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

TA关注的人

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