自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [系统编程]#2 文件I/O

例如,在Python中,可以使用内置的open()函数来打开文件,并通过返回的文件对象调用.read(), .write()等方法进行读写操作;完成所有对文件的操作后,应该及时关闭文件。这一步很重要,因为它可以释放与文件关联的资源,并确保所有未写入的数据都被正确地保存到磁盘上。在对文件进行任何操作之前,首先需要通过编程语言提供的相应函数或方法打开文件。打开一个文件用于追加数据。根据实际的应用场景和使用的编程语言,具体的实现细节可能会有所不同。在处理文件时,务必注意错误处理,比如文件不存在、权限不足等情况。

2025-07-25 20:42:22 318

原创 [系统编程]#1 标准I/O

标准I/O(Standard I/O)是指在计算机编程中处理输入和输出的一种机制,它提供了一种与平台无关的方式来读取输入数据、写入输出数据以及进行错误处理。标准I/O通常涉及到三个基本的流:标准输入(stdin):默认情况下从键盘接收输入。标准输出(stdout):默认情况下将输出打印到屏幕(终端)。标准错误(stderr):用于输出错误信息,默认也是输出到屏幕。标准I/O库:在C语言中,标准I/O是通过标准库<stdio.h>提供的函数来实现的。

2025-07-24 21:04:54 494

原创 [数据结构]#7 哈希表

(Hash Table),有时也称为散列表,是一种数据结构,它提供了一种快速存取数据的方法。哈希表利用一个被称为的机制将键映射到表中的一个位置来直接访问记录,以此加快查找的速度。哈希表通常支持非常快的插入、删除和查找操作,平均情况下这些操作的时间复杂度为O(1)。

2025-07-24 20:43:08 414

原创 [数据结构]#6 树

树是一种非线性的数据结构,它由节点组成,并且这些节点之间通过边连接。树的每个节点可以有一个或多个子节点,并且有一个特殊的节点叫做根节点(没有父节点)。树在计算机科学中应用广泛,尤其是在数据库索引、编译器设计和搜索算法等方面。

2025-07-24 20:29:54 257

原创 [数据结构]#5 队列

队列(Queue)是一种遵循先进先出(First In First Out, FIFO)原则的线性数据结构,即最早加入队列的元素会最先被移除。它类似于现实生活中排队的概念,如排队买票,先到的人排在前面,先完成服务。

2025-07-24 16:48:43 862

原创 [数据结构]#4 用链表实现的栈结构

它由一系列节点组成,每个节点包含两部分:数据域和指针域(指向下一个节点)。对于单向链表来说,每个节点只有一个指向后续节点的链接。在链表的头部(head)是开始访问链表的入口点,在实现栈时,我们通常将链表头视为栈顶。3.Peek/Top(查看栈顶元素):返回栈顶元素但不将其移除。4.IsEmpty(判断栈是否为空):检查栈中是否有元素。1.Push(入栈):向栈中添加一个元素。2.Pop(出栈):从栈中移除顶部的元素。

2025-07-21 15:33:00 273

原创 [数据结构]#3 循环链表/双向链表

简单的来说,就是将原来单链表中最有一个元素的next指针指向第一个元素或头结点,链表就成了一个环,头尾相连,就成了循环链表——circultlar linker list。我们再结合单向链表的结构,则可得到更加实用的双向链表——double link list。注意非空表,和空表。

2025-07-15 20:46:02 209

原创 [数据结构]#2 链表

为了表示每个数据元素,a[i]与其后边的数据元素a[i+1]之间的逻辑关系,对a[i]来说,除了存储它自身的信息之外,还需要存一个指示后续的信息。线性表链式存储的结构,特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以是不连续的,可以被存储在任意内存未被占用的位置上。所以单就这方面来说,顺序表只需要存储数据元素信息就可以了,在链式结构中还需要一个元素存储下一个元素的地址。而为了解决顺序存储的缺点,即插入删除和动态存储的问题,我们将使用更加健壮的链表。2.时间性能(时间复杂度)

2025-07-15 11:49:08 598

原创 [数据结构]#1 数据结构、算法简介&顺序表

把这两者分开,单谈两者其一都无法很完备地将这些概念介绍出来,在数据结构中,我们谈及算法,也是为了更好地帮助理解数据结构。

2025-06-30 19:06:07 507

原创 【补充】[Linux基础学习]#6 指针

指针操作二维数组,还是一样,获得数组数组首元素地址即可区别于一维数组:二维数组的本质是一维数组的数组。所以从一维数组角度看,元素类型又是一个一维数组a[0] 理解为: int[4]&a[0] 理解为: int[4] *通过指针访问到二维数组中的具体元素。

2025-06-23 20:27:58 345

原创 【补充】[Linux基础]#5 指针

这是指针部分初学时,经典且极易混淆的一个知识点。此时的【int *a】中的【a】是一个指向 int 类型的指针变量,它保存的是数组第一个元素的地址。类比于:int *p = &a[0];中的p,而基于数组的特性,我们只需要获得了首元素的地址,就可以将整个数组表示出来。·a是一个指向数组首元素的指针;·*(a + i)就等价于a[i];·*a就是a[0];·a自身是一个指针,保存的是地址。

2025-06-12 20:45:45 292

原创 【补充】[Linux基础]#4 函数

从目的字符串dest的结束符位置开始,将src中的字符一一拼接到dest中,并检查是否补充了结束符。将src中的字符分别复制到dest中,直到遇到结束符'\0'为止,且要在dest中补充结束符。当两字符串同一位置为相同字符,或者两者之一没有遇到结束符'\0'时,执行比较字符大小的操作。即计算在结束符'\0'前的所有字符个数。

2025-06-10 20:03:36 182

原创 【补充】[Linux基础]#3 函数

解决问题的基本思想是,问题n的解决,而要看n的解决,则需要看问题n-1的解决......以此类推,直到问题最开始阶段的结果,整体看来为从后往前推。1.函数返回值,如果不需要,则此时设计为void——表示空、没有。也可以放在main函数之中——但是这种不是标准C语言的做法(是 GNU gcc的标准)可以放在 main函数之后——此时使用之前,一定要做函数的声明,即函数原型。3.函数返回值类型与返回值代表的数据类型不一致时,以设计的返回值类型为准。需要根据函数的形参变量来确定,函数传参——类型匹配,个数相同。

2025-06-09 20:39:20 351

原创 【补充】[Linux基础]#2 数组

每次从拿到中间位置上值 和 要查找的值比较,但前提是数据本身必须是有序的。字符串的长度,即'\0' 字符之前的字符个数——字符串的长度为5个字符。在一个有序的数列中,找到合适的位置,插入正确顺序的数据。其中s代表的是char类型的一个数组,数组长度为10。因为字符串是一种独特的字符数组,他有自己的结束标志——'\0'用来处理字符串数据——可以用来存放字符串数据。而字符串的形式则为: "hello" ——我们称为字符串常量。形如char s[10];数组特点为:连续性、单一性、有序性。

2025-06-05 20:32:18 421

原创 【补充】[Linux基础]#1 数组

冒泡排序的中心思想与选择不同,即将相邻两元素进行比较,以默认从小到大排序标准为例,若前一元素比后一元素大,则交换两元素位置,若一共有5个元素,则第一个元素需要比较4次才可确认一个数的准确位置,这一过程为完成一趟比较;选择排序,顾名思义,选择合适的数放进合适的位置,以默认从小到大为例,假设乱序数组的第一个元素为最小值,其他元素与其依次比较,直到确认最小值,将其放在第一个位置。其余元素则将第二个位置对应元素假设为最小值,将未排序元素与其比较,直到确认最小值,将其放在第二个位置。

2025-06-04 20:50:55 249

原创 [Linux基础学习]#18 标准I/O操作文件_2

offset<0 不能超过这个文件开头。offset < 0 不能超过这个文件开头。time_t time(time_t *t) 可以获得一个时间的秒数。主要应用在文件中有固定格式的场景,程序运行都是在内存中运行的。先创建空洞文件——重建一个和源文件 一样大小的空洞文件。SEEK_SET 相对于文件开头的。界面交互 出错处理。

2025-02-20 16:35:47 679

原创 [Linux基础学习]#17 标准I/O操作文件

Linux操作系统当中IO都是对文件的操作,包含C一部分,任何支持标准C的系统都可使用标准IO实现文件存储标准IO在UNIX上是对文件的操作。一般都是对普通文件操作是一种有缓存的IO 在文件IO和用户程序之间,加入缓冲区,可有效减少系统调用的次数,节省系统IO调度资源。我们由文件的概念引出,文件是一组相关数据的集合,名称形如: 01.sh ,则可称为其文件名。说明: 带r的 要求,文件必须存在 ,如果不存在,就会报错。打开(新建),输入(写数据),阅读(读取),删除,插入,修改,关闭 (保存)。

2025-02-19 20:55:45 638

原创 [Linux基础学习]#16 linux系统编程——shell

shell发展简介:sh...我们用的是:bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。

2025-02-17 19:35:50 1135

原创 [Linux基础学习]#15 共用体&枚举、位运算

在早期,因计算机的硬件资源有限,所以考虑到,能不能让多个成员变量共用同一块空间,如此就能让有限的硬件资源效用最大化。位运算实际上指的是二进制位上的运算,他在嵌入式当中的运用非常普遍,是操作硬件时不可缺少的重要步骤。192.168.0.59 ip地址——网络环境中——实际对应是一个32位的数值。枚举类型本质是用int型数据表示的,这是枚举类型设计的不严谨的地方。所谓"枚举"是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。2.共用体初始化,只能写一个值,这个值是给第一个成员变量的值。

2025-02-17 09:02:02 556

原创 [Linux基础学习]#14 结构体

形式1: 先定义类型, 后定义变量struct stu类型定义定义变量形式2: 定义类型的同时定义变量struct stu}s;定义类型的同时定义变量形式3 定义类型的同时定义变量,没有结构体名struct}s;定义类型的同时定义变量——只用一次的时候int tno;int age;

2025-02-12 16:33:03 423

原创 [Linux基础学习]#13 指针&预处理

define 定义常量#define 标识符 字符串 或称为 #define 宏名 宏值形如:#define N 100表示——定义了一个宏 (符号),而这个符号代表的值就是100故宏定义格式为:#define 宏名(参数) 宏值int a[n];int i = 0;for(i = 0;i<n;注意:1. 预处理阶段,只做文本原样替换2. 宏就是用宏值将宏名原样替换3. 用途:当作常量来用,好处是可以做到一改全改,方便后续的操作。

2025-02-07 20:46:01 286

原创 [Linux基础学习]#12 指针

字符型数组的操作函数有多种,分别为strlen(统计长度)、strcpy(拷贝)、strncpy(将src中的前n个字符拷贝到目标数组中)、strcat(拼接)、strncat(将src中的前n个字符拼接到目标数组中)、strcmp(比较)、strncmp(将s1和s2中前n个字符比较)。const 此时是限定基类型的——表示将基类型限定为只读,准确说,是限定了通过 *p 的方式访问到的基类型为只读。限定p为只读,表示不能修改p中值,不能修改p的指向。字符串常量区:常量区的数据,只能读,不能改。

2025-01-23 19:32:02 300

原创 [Linux基础学习]#11 指针

基类型 * 指针变量名;(1) 基类型基类型表示地址(指针) 指向的目标空间, 存储的数据的类型(2) *表明此时定义的变量 为指针类型的变量(3) 指针变量名是一个标识符 (标识符符合命名规则)形式如:int a = 10;这是定义一个整形数据aint * p;定义了一个指针变量 p ,指针变量p要指向的是 int 型的一块空间意思即 p 指向了 a。

2025-01-22 19:36:56 610

原创 [Linux基础学习]#10 函数

同时需注意:linux系统栈的空间默认为8mb,若超出该大小范围,则会访问未知空间,造成错误。先入栈的后出,后入栈的先出。开始拷贝,即将src的字符串拷贝到dest中。其内部局部变量的执行特点为:自动申请,自动释放。首先,定位到dest 的'\0'位置。递归是种特殊的循环,也算函数的嵌套调用。形参:字符型二维数组形式 + 行数。形参:数组形式 + 数组长度。形参:数组形式 + 行数。实参:数组名 数组长度。实参:数组名 + 行数。形参:字符型数组形式。直接调用——直接递归。间接调用——间接递归。

2025-01-21 20:21:41 411

原创 [Linux基础学习]#9 函数

在处理生活中的一些实际问题时,需从需求出发,例如设计一个播放器菜单界面时,要将其拆分成“开始”、“选择界面”、“播放”、“退出”等基本功能来分别实现。此时设计这些对应的功能时,就需要运用到函数这一概念来辅助解决问题。C语言中的函数通常由一个函数头和一个函数体组成。形式为:返回类型 函数名称(参数列表)函数体int add(int a,int b) //先定義調用函數int result;int a, b;int ret;//函數調用return 0;

2025-01-20 19:23:17 482

原创 [Linux基础学习]#8 数组

类型说明符数组名[常量表达式][常量表达式];(1):类型说明符--->表示二维数组中数据元素的类型(2):数组名--->即标识符(3):[常量表达式][常量表达式]第1维第2维也即行列。

2025-01-18 23:28:39 425

原创 [Linux基础学习]#7 数组

一维数组:格式为:类型说明符数组名[常量表达式](1)类型说明符,即数据类型,包含:基本数据类型构造类型它表示所给数组中要存放的是这种类型的数据。(2)数组名,一个名字代表这个数组命名要符合标识符命名规则(3)[常量表达式][]就表示一个数组常量表达式—>整形的数值——数组中的元素个数——数组长度例如:intscore[30]表示定义了一个数组且表示定义了30个变量的数组说明:1.数组本身就是数据类型——构造类型。

2025-01-17 18:38:40 417

原创 [Linux基础学习]#6 流程控制

首先执行循环体语句,然后判断表达式,为真,继续执行循环体语句。语句执行完后,继续判断表达式,重复该过程,直到表达式为假。为假,则表示do-while结束,程序继续往下执行。判断表达式,为真,则执行语句,继续判断表达式,如果还为真,继续执行语句。重复该过程,直到表达式为假,while循环结束,程序继续往下执行。循环语句:即重复执行的语句,C语言中所提供的循环语句有for语句、while语句、dowhiler。2.判断表达式2,若为真,执行语句,接着求解表达式3。while(表达式)dowhile循环。

2025-01-17 09:03:16 204

原创 [Linux基础学习]#5 流程控制——输入和输出

default 用于在上面所有 case 都不为真时,执行一个任务,且default 中的 break 语句不是必需的。若为假,则直接表示if语句结束,且当if语句结束之后,程序继续往下执行其余语句。当语句1和 语句2都执行完时,也就代表if语句结束,其余程序继续往下执行。在一个 switch 中可以有任意数量的 case 语句,但每个 case 后要跟上一个要比较的值和一个冒号。当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。case1(匹配值1)

2025-01-16 21:09:13 287

原创 [Linux基础学习]#4 输入和输出

若为假,则直接表示if语句结束,且当if语句结束之后,程序继续往下执行其余语句。当语句1和 语句2都执行完时,也就代表if语句结束,其余程序继续往下执行。编程过程中的某些情景会涉及到各种各样的单词名称,用来表达语句含义,此时将单词连在一起,用于表示复合词与语句。在编写代码程序时,偶尔也会遇到需要判断的情况,这时就需要系统产生判断条件,此时,合理运用关系运算符和关系表达式可以有效地解决相关问题。一假则假,即只要有一个条件为假时,整个表达式则为假。一真则真,即只要有一个条件为真时,整个表达式则为真。

2025-01-15 20:22:32 316

原创 [Linux基础学习]#3 运算符和表达式

语法:putchar(ch),其中ch可以是字符型常量、变量,或者是一个不大于255的整型常量或变量,也可以是一个转义字符1。在C语言中,getchar和putchar是用于处理单个字符输入和输出的函数。功能:getchar函数用于从标准输入设备(通常是键盘)读取一个字符2。有区别,其中“*”和“/”优先于“+”和“-”。其中,+、-、*、/为四则运算符,和日常概念没。左移运算axen,(n为非负整数)的运算规则是。例如:10%2=0即10对2取模.结果为0。右移运算a>>n(n为非负整数)的运算规则是。

2025-01-14 22:11:16 341

原创 [linux基础学习]#2 C语言数据类型

整型变量则是编程中用于表示整数类型数据的变量,分为int(整型)、short(短整型)、long(长整型)、long long(常常整型),各自占用内存空间的字节数分别为4、2、8、8。而浮点型精度的不同,可能在一些需要比较的情况下造成结果的问题,所以比较时,尽量使用同种精度的类型进行比较。其中,整型的常量形式包含十进制、八进制、十六进制,而计算机最终存储的是二进制形式的数据,固此处常常涉及三种常量形式向二进制形式的转化以及互相之间形式的转化。另一方面,关于整数的存储,计算机存储的都是整型数据的补码。

2025-01-13 20:43:46 334

原创 Linux的基础学习

日常生活中的空调,手表,音箱,汽车等带有数字接口设备的事物,都有嵌入式的应用。Linux是操作系统的内核,而Ubuntu是基于Linux内核的一个具体操作系统发行版,类似于安卓与MIUI、Flyme等的关系。Linux内核中的虚拟文件系统则是用一个通用的文件模型表示了各种不同的文件系统,这个文件模型屏蔽了很多具体文件系统的差异,使Linux内核支持很多不同的文件系统。首先,内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。cp(copy):复制备份功能。

2025-01-12 20:47:14 198

空空如也

空空如也

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

TA关注的人

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