自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux——进程进阶:exec 族

摘要:本文介绍了两个重要的进程控制函数。exec函数族用于进程代码替换,通过不同后缀区分参数传递方式,常与fork()配合使用,执行后原代码段被完全覆盖。system函数则封装了fork()和exec(),提供执行Shell命令的简便接口,适合简单的系统操作。两者都是Linux进程管理的核心工具,但system更侧重易用性,而exec提供更底层的控制。

2026-02-11 18:20:27 293

原创 Linux:线程(thread)

本文介绍了线程的基本概念及其与进程的区别。线程是依附于进程的最小执行单元,用于实现并发处理,共享进程资源但拥有独立栈空间。相比进程,线程调度效率更高、通信更便捷,但稳定性较差。文章还对比了多进程和多线程的优缺点:进程独立安全但开销大,线程高效但异常会影响整个进程。最后简要说明了线程相关函数接口,如pthread_create用于创建线程。总体而言,线程适合同一软件内任务并发,而进程更适合不同软件间的隔离运行。

2026-02-11 18:01:03 742

原创 Linux: 进程(Process)

本文介绍了进程的基本概念及相关操作。进程是程序的动态执行过程,包含创建、调度和消亡等阶段。文章详细讲解了进程查看命令(top、ps)、管理命令(kill、前后台操作)以及优先级设置(nice、renice)。同时阐述了进程的内存映射机制(MMU)和虚拟地址空间分布,包括文本段、数据段、堆栈区等。此外还介绍了7种进程调度算法和6种进程状态(运行态、就绪态等)。最后说明了进程创建函数fork的使用方法及其特性,包括子进程对父进程资源的拷贝机制。全文系统性地梳理了进程管理的核心知识点。

2026-02-10 17:46:41 761

原创 Linux:时间函数

C语言时间处理函数摘要:time()函数获取1970年1月1日至今的秒数,参数为存储地址,返回秒数或-1(失败)。localtime()将秒数转换为包含时区的日历时间,返回tm结构体,包含年、月、日等详细信息。mktime()则执行反向操作,将tm结构体转换为秒数。这些函数位于time.h头文件,用于系统时间处理和时间格式转换。

2026-02-10 00:30:22 340

原创 Linux软件编程:IO编程——目录IO

摘要:本文介绍了Linux目录操作相关函数,包括:opendir()打开目录流,closedir()关闭目录流,readdir()读取目录项;mkdir()创建目录,rmdir()删除空目录;chdir()切换工作目录,getcwd()获取当前路径。重点说明了各函数的参数、返回值及使用注意事项,如内存泄漏预防和目录权限设置。最后提到可通过综合练习掌握目录创建、删除、切换和文件遍历等操作。这些函数是Linux系统编程中目录操作的基础。

2026-02-09 16:46:43 404

原创 Linux软件编程:IO编程——文件IO

文件IO与标准IO是Linux系统中的两种文件操作方式。标准IO通过库函数实现,具有缓存机制,适合普通文件操作;文件IO是系统调用,无缓存,适用于设备文件和实时通信。文件IO接口包括open、close、read、write和lseek等函数,通过文件描述符操作文件。标准IO本质上是文件IO的封装,系统默认打开0(stdin)、1(stdout)、2(stderr)三个文件描述符。文件描述符具有上限限制,新描述符总是使用最小可用整数。两种IO方式可通过dup/dup2函数相互转换。

2026-02-09 14:04:07 798

原创 Linux软件编程:IO编程——标准IO

本文摘要:本文系统介绍了Linux标准I/O编程的核心概念和接口函数。主要内容包括:1)标准I/O的三种缓存形式(全缓存、行缓存、不缓存)及其应用场景;2)文件操作三步骤(打开、读写、关闭)及fopen/fclose函数详解;3)字符处理(fgetc/fputc)、行处理(fgets/fputs)、格式化I/O(fscanf/fprintf)和二进制I/O(fread/fwrite)函数;4)文件定位(fseek/ftell/rewind)和状态检查(feof/ferror)函数。重点强调Linux&quo

2026-02-06 17:35:42 934

原创 Linux:软件编程

本文介绍了Linux操作系统基础知识和Shell编程要点。主要内容包括:1)Linux系统概述,包括其发展历史、特点、组成架构和核心功能;2)常用Shell命令,如文件操作、查看、搜索、权限管理等基础命令;3)Shell脚本编程,涵盖变量、分支、循环、数组、函数等语法结构。文章详细对比了解释型和编译型语言的特点,并系统讲解了Shell脚本的开发流程、引号使用、环境变量等核心概念。通过具体命令示例和脚本范例,帮助读者快速掌握Linux系统管理和Shell编程的基本技能。

2026-02-05 19:06:55 2201

原创 排序算法:常用排序算法

本文系统介绍了程序效率的衡量指标和常见算法的时间复杂度。主要内容包括:1)程序效率的核心指标是时间复杂度和空间复杂度,列举了从O(1)到O(2^n)的常见复杂度等级;2)详细分析了冒泡排序、选择排序、插入排序等O(n^2)算法,特别指出插入排序在数据基本有序时可达O(n);3)介绍了希尔排序(改进版插入排序)和快速排序两种O(nlogn)高效算法,阐述其分治思想;4)讲解了折半查找的O(logn)查找算法。通过代码实现和运行时间测试,全面比较了各类算法的性能特点,为算法选择提供参考依据。

2026-02-04 14:58:46 612

原创 数据结构:哈希表(Hash table)

摘要:哈希表是一种基于键值对的高效数据结构,通过哈希函数将关键码映射到表中位置实现快速访问(O(1)时间复杂度)。其核心包括哈希算法、哈希冲突(不同数据映射到同一位置)及解决方法(如链地址法,即用链表存储冲突数据)。示例展示了哈希表的基本操作:创建、插入数据、显示全部数据、查找单个数据及销毁哈希表。

2026-02-03 23:52:47 190

原创 数据结构:二叉树(Binary tree)

本文介绍了二叉树的基本概念和实现方法。主要内容包括:1.树的相关概念,如节点、度、层等术语;2.二叉树的定义、特性(如满二叉树、完全二叉树)和遍历方式(前序、中序、后序、层序遍历);3.二叉树的两种存储方式(顺序存储和链式存储)及其适用场景;4.代码实现示例,包括递归实现完全二叉树和非完全二叉树的创建、遍历和销毁操作。文章强调二叉树在高效查找、排序等方面的重要应用价值。

2026-02-02 21:13:00 406

原创 数据结构:队列

本文介绍了队列的基本概念及其两种实现方式。队列是一种先进先出(FIFO)的线性数据结构,与栈(LIFO)形成对比,二者都是操作受限的表结构。队列分为顺序循环队列和链式循环队列两种类型,文中详细阐述了它们的基本操作:创建空队列、入队、出队、读取队头元素、判空/判满以及销毁队列。在顺序循环队列中,通过数组实现并采用循环方式解决空间浪费问题;链式循环队列则通过链表节点实现。两种实现方式各具特点,顺序队列适合固定大小场景,链式队列则更灵活但需要额外空间存储指针。

2026-02-02 15:54:21 533

原创 数据结构:栈

本文介绍了栈和队列的基本概念及实现方式。栈是先进后出的数据结构,队列是先进先出的数据结构。重点讲解了顺序栈和链式栈的实现:顺序栈使用数组存储,通过栈顶指针管理;链式栈采用头插法管理的单链表。文章详细说明了两种栈的核心操作,包括初始化、判空、进栈、出栈和销毁等。顺序栈部分以空增栈为例,链式栈部分强调其本质是单向链表。最后提供了相关练习题目。

2026-01-31 20:37:09 910

原创 数据结构:链表(2)

本文介绍了链表常用的6个进阶函数实现方法:①快慢指针法找中间节点;②双指针法找倒数第k个节点;③链表倒置;④冒泡排序(通过交换数据实现);⑤选择排序(类似数组排序);⑥判断环、环长及环入口(快慢指针相遇判断环,计数法求环长,双指针定位入口)。这些函数涵盖了链表常见操作,采用指针技巧提高效率,其中快慢指针是解决链表问题的核心方法。

2026-01-30 17:00:05 728

原创 数据结构:数据结构基础、顺序表、链表

本文摘要:程序由数据结构与算法构成,数据结构分为逻辑结构(线性、树形、图形)和存储结构(顺序、链式、索引、散列)。顺序表通过连续存储实现高效访问但增删不便,链表牺牲随机存取换取动态性和增删效率。时间复杂度衡量程序效率,常见复杂度包括O(1)、O(n)、O(n²)等。链表分为单向、双向和循环链表,内核中常用双向循环链表。文中详细介绍了链表的创建、插入、访问和删除操作,强调链表适用于频繁增删场景,但存在空间开销大和访问效率低的缺点。

2026-01-29 17:25:50 1914

原创 C语言printf: VT100 终端控制码

简介 :vt100 是一个古老的终端定义,目前几乎大部分的终端都兼容这种终端。VT100 控制码是用来在终端扩 展显示的代码。特点:所有的控制符全部以\033 打头(即 ESC 的 ASCI 码),以m或其他指令结尾。用输出语句来输出,可以输 出不同颜色的字符。在C语言程序中,一般用 printf 来输出 VT100 的控制字符。

2026-01-27 23:41:07 451

原创 C语言:内存问题调试

本文介绍了C语言常用库函数和内存调试方法。常用库函数包括sprintf/sscanf(格式化字符串)、strtok(字符串分割)、strstr(子串查找)等。内存问题调试主要涉及三种情况:内存越界(推荐使用strncpy等安全函数)、段错误(通过gdb调试core文件定位)、内存泄漏(使用valgrind工具检测)。调试方法包括打印法、gdb调试和valgrind工具使用,并详细说明了配置环境和工具安装步骤。这些内容为C语言开发中的常见问题提供了实用的解决方案。

2026-01-26 17:21:52 953

原创 C语言:多文件编程及Makefile使用

本文总结了C语言多文件编程的核心知识点:1)多文件结构由.h头文件(含宏定义、函数声明等)和.c源文件组成,使用#ifndef防止重复包含;2)Makefile工程管理工具的基本语法、变量定义和常用gcc编译选项;3)动态库(.so)与静态库(.a)的区别:静态库编译时加载会增加体积但独立运行,动态库运行时加载可共享但依赖存在。重点包括多文件组织、Makefile使用和库文件特性,为嵌入式开发提供基础支持。

2026-01-25 15:50:09 753

原创 C语言:内存管理

本文介绍了内存四区中的栈区和堆区特点及管理方式。栈区由系统自动管理,存放局部变量,空间较小且自高向低增长;堆区需程序员手动管理,通过malloc申请、free释放空间,适合大数据存储且自低向高增长。malloc函数用于申请指定字节的堆空间,成功返回首地址,失败返回NULL;free函数用于释放堆空间。使用时需包含stdlib.h头文件。二者在管理方式、适用场景和增长方向上存在明显差异。

2026-01-23 17:46:00 278

原创 C语言:构造数据类型(2)——共同体、枚举

摘要:本文介绍了C语言中的共用体、枚举、类型重定义和位运算等核心概念。共用体(union)允许多个变量共享同一内存空间,与结构体相比节省内存但成员互相覆盖。枚举(enum)用于定义命名常量集合,提升代码可读性。typedef可用于类型重定义,简化复杂类型声明。位运算部分详细说明了按位与、或、异或等操作及其应用,如位操作技巧和高效变量交换方法。这些特性在系统编程和底层开发中具有重要作用。

2026-01-23 16:21:04 884

原创 C语言:构造数据类型(1)——结构体

本文介绍了C语言中的结构体(struct)这一构造数据类型。结构体是由不同数据类型的成员组成的复合类型,用于封装相关数据。主要内容包括:1)结构体的定义语法和使用场景;2)结构体变量的定义和初始化方法;3)成员变量的访问方式(使用"."或"->"运算符);4)结构体的内存对齐规则及优化原则;5)结构体在构建链表、树等数据结构中的应用。文章还简要回顾了指针相关知识点,为后续学习构造数据类型奠定基础。

2026-01-22 17:09:13 899 1

原创 C语言指针(3)

今日的重点有:①二级指针基本概念,应用场景,使用方法(定义、赋值、调用)②void指针基本概念③volatile指针的基本概念,作用④指针数组和数组指针的概念,定义方法,作用⑤二维数组的指针⑥指针数组的传参方法好啦,今天的嵌入式自学笔记就到这儿啦~明天休息,后天继续学习 “C语言:构造数据类型” ,想看的宝子记得点个关注,不然刷着刷着就找不到我啦~

2026-01-21 21:23:03 1541

原创 C语言:指针(2)

今日的重点有:①字符数组和字符串的传参方式:int fun (char* pstr)。②函数指针与指针函数的基本概念,应用场景,使用方法(定义、赋值、调用)③cconst指针的五种使用形式好啦,今天的嵌入式自学笔记就到这儿啦~明天休息,后天继续学习 “C语言:二维指针” ,想看的宝子记得点个关注,不然刷着刷着就找不到我啦~

2026-01-20 17:19:06 848

原创 C语言:指针——C语言的灵魂

本文介绍了C语言中指针的核心概念与应用。主要内容包括:1)指针基础:指针变量存储内存地址,32位系统占4字节,64位系统占8字节;2)运算符&和*的使用,区分指针变量本身与指向空间;3)指针作为函数参数的两种方式(传值和传地址);4)指针与数组的关系,数组名即首元素指针常量。重点强调指针变量初始化以避免野指针,以及指针运算规则。指针能直接操作内存,使程序更高效灵活,是C语言的重要特性。

2026-01-19 18:19:23 1163

原创 C语言:函数传参、函数的嵌套调用、预处理指令

今日的重点有:①函数传参的三种方式:a.通过实参赋值给形参 b.通过全局变量 c.对于数组:整型数组——传数组名和长度;字符型数组——传数组名②函数的嵌套调用(掌握把自己看作一个功能的这种思想)③预处理命令(带参宏实现最大值最小值求解功能)好啦,今天的嵌入式自学笔记就到这儿啦~明天休息,后天继续学习 “C语言:指针” ,想看的宝子记得点个关注,不然刷着刷着就找不到我啦~

2026-01-17 17:47:47 611

原创 C语言——函数、C语言的内存分布、变量的作用域和生存周期

今日的重点有:①函数的功能、定义、调用、声明②C语言的内存分布(内存四区:栈区,堆区,全局区,代码区),寄存器与CPU的关系③变量的作用域和生存周期好啦,今天的嵌入式自学笔记就到这儿啦~明天继续学习 “C语言:函数” ,想看的宝子记得点个关注,不然刷着刷着就找不到我啦~

2026-01-16 19:57:24 659

原创 C语言:数组(3)——二维数组

本文主要介绍了二维数组的基本概念和使用方法。内容分为二维整型数组和二维字符型数组两部分:1)整型数组部分讲解了定义格式(如int a[2][3])、元素访问、初始化方法(全部/局部/默认初始化)、内存存储特点及矩阵运算应用;2)字符型数组部分重点说明了字符串数组的初始化方式(如char str[5][32]={"hello"})和打印排序方法。文章强调二维数组本质是一维数组的数组,并指出行数可省略但列数不可省略的初始化注意事项。最后预告了后续函数内容的学习计划。

2026-01-16 14:42:17 886

原创 C语言:数组(2)——一维字符型数组(用得最多)

本文介绍了C语言中字符型数组和字符串的基本概念与操作。主要包括:1)字符数组的定义与初始化方法(全部、局部、默认初始化);2)数组元素的访问与常见错误;3)字符串的输入输出函数(printf/puts, scanf/gets);4)字符串处理函数(strlen, strcpy, strcat, strcmp)的使用方法及注意事项;5)二维数组的定义、初始化和访问方式。文章重点讲解了字符串与字符数组的区别,强调了'\0'作为字符串结束标志的重要性,并提供了各种操作函数的示例和注意事项。

2026-01-15 17:25:43 690 1

原创 排序算法:十大经典排序算法

堆排序​ - 理解"堆"数据结构希尔排序​ - 插入排序的优化桶排序​ - 分布式思想基数排序​ - 按位处理的思路。

2026-01-14 21:04:36 583 1

原创 C语言:数组

数组概念:相同数据类型的有限元素的集合 (一)一维数组 (二)二维数组 (三)多维数组 注意:①元素个数必须是常量或者常量表达式,不能为变量或者变量表达式 访问方式: 注意:①元素下标为:0~元素个数-1,如果使用a[5]是错误的,越界访问(内存越界会产生很离奇古怪的问题,很危险,编译会通过,有的运行后不会提示,你不知道它错了) ②这里的元素下标,可以是常量、常量表达式、变量、变

2026-01-14 18:26:35 1738

原创 C语言:循环结构

今日的重点有:①for的使用(用得最多)②while(可与for等价转换)⑥使用GDB进行调试的步骤一起来练练手把~题目:编写程序打印出所有的水仙花数题目解释:① 水仙花数是一个3位数②每位上的数的立方和值为该数本身如:1531^3 + 5^3 + 3^3 = 153,所以153是水仙花数结果:代码将在下一条公布,可以将你的代码分享在评论区哦~(> v <)~好啦,今天的嵌入式自学笔记就到这儿啦~

2026-01-13 17:47:03 725

原创 C语言:流程控制

任何复杂的程序都可以用三种基本控制结构来描述——顺序结构、选择结构和循环结构。——C.Bohm和G.Jacopini。

2026-01-12 17:12:02 746

原创 C语言:常见的输入输出函数

/注:若敲 100 ,则ch存的不是100在ascii中对应的d,而是字符 '1' (因为所有能在屏幕上显示、从键盘中输入的都是字符)putchar('a'):称为函数表达式。//先打印字符C, 再把putchar('C') 的结果67+4得到71,最后打印ascii码表中71对应的字符G。():括号代表使用这个函数,如putchar()。示例: putchar('a') //打印字符 a。(putchar('a''\n')、putchar("a")、等都不行)

2026-01-10 12:31:17 347

原创 C语言:计算机操作的3类对象(常量、变量、运算符和表达式)

在程序运行过程中不能改变的量整形常量(默认为有符号int类型,但在其后加u,L,UL等可以改变其类型)123;//正的整型-123;//负的整型123u;//无符号整型123U;123l;//长整型整型123L;123ul;//无符号长整形123UL;0x123;//0开头代表八进制0X123;//0x开头代表十六进制2.浮点型常量(默认为double类型)3.14//默认为double类型3.14f;//float类型3.14F;3.14E15;

2026-01-09 22:26:06 863

原创 C语言:C语言基础

1.预处理处理和#号相关的代码,将C语言展开、替换、按照条件加入去除①操作:需要展开的代码展开(头文件代码展开)需要加入编译的代码加入编译,需要从编译中去除的代码去除(根据条件编译加入或删除指定部分的代码)将一些代码进行替换(宏定义的替换)②编译选项:2. 编译将C语言代码编译成汇编代码3. 汇编将汇编代码编译为机器语言4. 链接将用户的代码与系统中的库链接成一个可执行程序CPU与内存外存的配置bit(位):1个bitByte(字节):8位Word(字):2个。

2026-01-08 19:06:40 1419

原创 Linux:Linux基础

本文介绍了Linux系统的基础知识,包括常用命令、目录结构和C语言开发流程。主要内容包括:1) Linux基础命令如ls、mkdir、rm、cd等的基本用法和注意事项;2) Linux树形目录结构及各目录功能,路径表示方法;3) 使用vim编辑、gcc编译C程序的具体步骤。文章系统整理了Linux操作的基本要点,适合初学者快速掌握Linux环境下的文件操作和程序开发流程。

2026-01-07 22:18:05 1052

空空如也

空空如也

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

TA关注的人

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