- 博客(38)
- 收藏
- 关注
原创 C语言:数据结构(单链表)
顺序表:顺序存储的线性表。链式表:链式存储的线性表,简称链表。既然顺序存储中的数据因为挤在一起而导致需要成片移动,那很容易想到的解决方案是将数据离散地存储在不同内存块中,然后在用来指针将它们串起来。这种朴素的思路所形成的链式线性表,就是所谓的链表。
2024-12-24 11:42:59 1258
原创 C语言:数据结构(线性表和顺序表)
顺序存储中,由于逻辑关系是用物理位置来表达的,因此从上述示例代码可以很清楚看到,增删数据都非常困难,需要成片地移动数据。顺序表对数据节点的增删操作是很不友好的。优点不需要多余的信息来记录数据间的关系,存储密度高所有数据顺序存储在一片连续的内存中,支持立即访问任意一个随机数据,比如上述顺序表中第i个节点是 s->data[i]缺点插入、删除时需要保持数据的物理位置反映其逻辑关系,一般需要成片移动数据当数据节点数量较多时,需要一整片较大的连续内存空间。
2024-12-24 11:40:43 1105
原创 C语言:预处理
预处理就是在源文件(如.c文件)编译之前,所进行的一部分预备操作,这部分操作是由预处理程序自动完成;当源文件在编译时,编译器会自动调用预处理程序来完成预处理执行的解析,预处理执行解析完成才能进入下一步的编译过程。gcc 源文件 -E -o 程序名[.后缀]不带参数的宏定义# define 宏名 常量数据预处理:此时的预处理只做数据替换,不做类型检查注意:我们定义的宏是不会占用内存空间,还没有进入到编译环节,更不要说运行了,在编译前已经将宏名替换成了常量数据宏展开;
2024-12-19 17:22:20 695
原创 C语言:文件IO
什么是文件文件是保存在外存储器(一般代指磁盘,U盘,移动硬盘等)的数据的集合文件操作体现在哪几个方面数据的读取和写入可被视为针对文件进行输入(Input)和输出(Output)操作,此时数据像水流一样从外存储器去流向内存,或者从内存流向外存储器,所以系统形象的成文件操作为。C语言程序对文件的操作采用“文件缓冲机制”。就是说在程序对文件的数据读写并不是直接操作文件中的数据,而是系统会为文件在内存中创建“文件缓冲区”,程序对文件的 操作,其实在缓冲区进行的。
2024-12-17 17:37:49 986
原创 C语言:构造类型(补充)
如果定义不相干的常量,使用宏定义;如果需要定义一组相关的常量,使用枚举。定义:我们一般情况下,定义常量使用宏定义(#define 宏名称值),宏定义非常适合没有关联关系的常量;,那么使用宏定义,就不是很清晰明了,这个时候就需要用到枚举。说明:枚举类型定义了一组常量,在开发应用中可以直接使用这些常量。(常用)枚举类型也可以是类似于结构体一样定义变量等操作。(不常用);我们可以在定义时指定它的默认值,如果个别没有赋值,可以根据赋值依次+1计算推导。
2024-12-17 10:57:16 500
原创 练习题:分支结构
输入你的身高和体重,测试你的健康状况计算bmi的值, bmi = (体重(kg)/⾝⾼(m)的平⽅) 如果bmi ⼩于18.5,则显⽰“偏瘦,注意加强营养” 如果bmi 在18.5和23.9之间,则显⽰“体重指数良好,注意保持” 如果bmi值⼤于23.9 ,则显⽰“你有点偏胖,注意锻炼”
2024-12-17 09:09:28 216
原创 C语言:构造类型
定义:自定义数据类型的一种,关键字struct,结构体类型的变量可以存储多个不同数据类型的数据struct 结构体名数据类型1 成员名称1;// 结构体中的变量叫做成员数据类型2 成员名称;...注意:结构体中定义的变量,我们称之为成员变量格式说明结构体名:合法的标识符,建议单词的手写字母大写(所谓的结构体,要自定义类型的礼类型的)数据类型:C语言支持的所有类型(包括函数,函数在这里用函数表示)成员名称:合法的标识符,就是变量的命名标准。
2024-12-16 19:38:11 1074
原创 C语言:指针(第五天)
定义:指向一块未知区域(已经销毁或者访问受限的内存区域外的已存在或不存在的内存区域)的指针,被称作野指针。野指针是危险的。危害:① 引用也野指针,相当于访问了非法的内存,常常会导致段错误(segmentation fault),也有可能编译运行不报错。② 引用野指针,可能破坏系统的关键数据,导致系统崩溃等严重后果野指针产生的场景:变量未初始化,通过指针访问该变量指针变量未初始化int * p;指针指向的内存空间被(free)回收了指针函数中直接返回了局部变量的地址如何避免野指针?
2024-12-16 19:37:32 1049
原创 C语言:指针(第四天)
定义:main函数有多种定义格式,main函数也是函数,函数相关的结论对main函数也有效(也可以定义main函数的函数指针)说明:argc,argv是形参,他们俩可以修改main函数的扩展写法有些编译器不支持,编译报警告main函数是系统通过函数指针的回调调用的。
2024-12-16 19:35:42 1194
原创 C语言:指针(第三天)
定义:函数指针本质上是指针,它是函数的指针(定义了一个指针变量,变量中存储了函数的地址)。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。定义:本质上是函数,这个函数的返回值类型是指针,这个函数称为指针函数。在函数中不要直接返回一个局部变量的地址,因为函数调用完毕后,局部变量会被回收,使得返回的地址就不明确。实参是指针类型,形参是字符数组(在函数内部不能对字符串中的字符做修改)
2024-12-16 19:25:47 1046
原创 C语言:指针(第二天)
通过指针引用数组元素引用一个数组元素,可以用:① 下标法:如a[i]形式。② 指针法:如*(a+i)或者*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值:p = a;需求:有一整型数数组a,有10个元素。输出数组中的全部元素。分析:要输出个元素的值,有三种方法。下标法:通过改变下标输出所有元素指针法:通过数组名计算出数组元素的地址,找出数组元素值指针法:用指针变量指向数组元素使用指针变量指向数组元素时,(上面第三种写法),注意一下三点:①②③。
2024-12-10 16:44:22 850
原创 C语言:分支结构
我们在程序设计往往会遇到如下的问题,比如下面的函数的计算也就是我们是必须要通过一个条件的结果来选择下一步的操作,算法上属于一个分支结构,C语言中实现分支结构主要使用if语句。
2024-12-09 19:34:16 837
原创 C语言:函数
返回类型 | 类型标识符] 函数名([形参列表]) // 函数头 | 函数首部函数体语句;// 函数体,整个{}包裹的内容都属于函数体(包括返回值)返回类型:函数返回值的类型函数名:函数的名称,遵循标识符命名(使用英文字母、数字,_,不能以数字开头,建议小写+下划线命名法)形参列表:用于接收主调函数传递的数据,如果有多个参数,使用分隔,且每一个形参都需要指定类型。函数的返回类型,就是返回值的类型,两个类型可以不同,但必须能够进行转换。
2024-12-09 19:15:17 1037
原创 C语言:指针(第一天)
内存地址:系统为了内存管理的方便,将内存划分为一个个的内存的单元(通常1个字节),并为每一个内存单元进行编号。内存单元的编号称之为该内单元的地址。一般情况下,我们每一个变量都是由多存单元构成的,多以每个变量的内存地址,其实就是这个变量对应的第一个内存单元的地址,也叫基地址/首地址。变量指针变量地址称之为改变了的指针(本质是地址)。变量地址往往是指变量在内存中的第一个内单元的编号(首地址)。int a;&a --- 变量a的地址,也称为变量a的指针int arr[2];
2024-12-09 19:06:31 1131
原创 C语言:数组(补充)
二维数组本质是一个行列式的组合,也就是说二维数组是由行和列两部分组成。二维数组数据是通过行列进行解读。二维数组可被视为一个特殊的一维数组,相当于二维数组又是一个一维数组,只不过它的元素是一维数组。(也就是说数组的元素可以是数组类型){3,4,5}
2024-12-05 17:25:28 1163
原创 C语言:数组
数组是相同类型有序数据的集合。类型说明符 数组名 [ 数组容量 ]数组的类型说明符由数组中的元素来决定,也就是元素是什么类型,数组就是什么类型。数组名也是标识符,我们所说的数组[名],大家可以理解为数据类型是数组的变量(名)。命名规则与变量名相同。遵循标识符命名规则。数组容量也可以叫做元素个数或者常量表达式,表达式必须为整型,可以包含常量和符号常量,但不能是变量。int arr[5];// 常量5// 符号常量// 常量表达式类型:代表了数组中元素的类型。
2024-12-03 17:32:28 1175
原创 C语言学习笔记:流程控制和数据输入输出
广义的说,为解决一个问题而采取的方法和有限的步骤,就称为“算法”例如:将大象放入冰箱的算法就可以如下描述:打开冰箱门-把大象装进去-关闭冰箱门。
2024-11-28 19:07:01 1089
原创 C语言学习笔记:运算符
整型、实型、字符型数据间可以进行混合运算,如:运算时,参加运算的两个数据如果类型不同,则首先将其类型转换成一致在运算,转换规则是:将优先级低的类型转换到优先级高的类型,被称作自动类型转换。自动类型转换的形式为:大类型类型 变量名 = 小类型变量;注意:在混合运算过程中,系统所进行的类型转换并不改变原数据的类型,只是在运算过程中将其值变成同类型后再运算。int a = 10;// a只是在运算过程中临时将其值变成double,但是a本身并没有改变类型。
2024-11-28 08:46:48 810
原创 C语言学习笔记:数据类型
char 变量列表;案例:int main()char c1,c2;c1 = 'A';c2 = 'B';// c1=A,输出的是字符本身// c2=B,输出的是字符本身// c1=65,输出的是字符对应的ASCII码编号// c1=66,输出的是字符对应的ASCII码编号说明:一个字符变量只能存放一个字符。C的编译系统都规定以一个字节的存储空间来存放一个字符,因此,一个字符变量在内存中的大小是1字节(占1个字节)
2024-11-26 19:10:44 712
原创 Linux系统学习笔记:第五天
Linux中根目录以外的文件想要被访问,就需要将其关联Linux系统中的某个目录来实现,我们将这种关联操作称之为“挂载”,这个目录就是“挂载点”,Linux专门提供了一个用于挂载的目录,叫做“mnt”。解除此关联关系的过程被称之为“卸载”。
2024-11-25 09:01:54 653
原创 Linux系统学习笔记:第四天
本质上我们Linux自带的编译器叫做Vi编辑器,名字取自Visual,它是一个全屏幕文本编辑器(编辑程序)。在我们Linux系统中Vi是最常用的编辑程序,它的文本编辑功能十分的强大,但使用起来比较复杂。Vim是Vi的增强版,所以Vi的功能Vim都有,而且Vim新增了许多Vi所没有的功能,它比Vi更容易使用。这个工具不是Linux内置,需要额外的安装。
2024-11-22 16:09:05 1078
原创 Linux系统学习笔记:第三天
1. 计算机通过用户名和密码识别用户。2. Linux中新建用户后,需要设置密码。3. 系统中有一个特殊的用户root。4. 用户组:把几个用户归在一起,这样的组被称之为用户组,规定文件所属用户组的权限可以使该组所有成员拥有这些权限。
2024-11-21 09:08:08 915
原创 Liunx系统学习笔记:第二天
语法:指令[选项] [操作的文件或目录]pwd:查看当前目录的路径(绝对路径)ls:显示指定路径(默认当前路径)下的文件或目录-a:显示所有(包含隐藏文件)文件或目录-l:显示所有的文件或目录的详细信息列表-r:将文件以相反的次序显示(原定是依照英文字母次序显示)-t:将文件以创建时间的先后次序显示说明:多个参数是可以共同出现的,如:我们也可以指定具体的目录进行访问,如:cd:切换目录格式:cd 目录注意:cd 后不跟文件路径,应该跟文件夹(目录)路径cd中的特殊写法:①。
2024-11-19 17:56:05 684
原创 Linux系统学习笔记:第一天
Linux是一个操作系统,开源的,免费的,是一个基于文件的操作系统,所有的一切都是针对文件进行的。内部是基于一个控制器体积一般比较小(决定了嵌入式产品,它的硬件资源比较紧缺)对功耗的要求特定的应用越来越智能化。
2024-11-19 17:28:41 1019
原创 学习笔记day6
⽤write函数写的时候,需要内核去调⽤写函数,⽽内核调⽤需要⼀定的时间,但是开发板的执⾏速度⽐较快,所以,在调⽤的过程中已经显⽰上去了,但是整个调度过程中,数据有⼀部分还在内核中,没有显⽰出来,形成了堵塞)。// 计算每一行的无效字节数。#include // 位于usr/include/linux/input.h。#include // 位于usr/include/linux/input.h。// 解除屏幕映射的字节数,所以 * 4。
2024-11-12 08:48:09 770
原创 学习笔记day5
第3步:将缓冲区的颜色数据写入到fb0(LCD屏幕的显示颜色的设备文件),write(lcd,buf,800*480*4);第3步:将缓冲区的颜色数据写入到fb0(LCD屏幕的显示颜色的设备文件),write(lcd,buf,800*480*4);第1步:打开fb0文件("/dev/fb0")可读可写的方式打开(O_RDWR)open("/dev/fb0",O_RDWR);· 24位:BMP图片的数据是由:基本信息域(54个字节)+数据域(像素点,由RGB构成)组成的,也就是3字节。
2024-11-10 18:28:24 887
原创 学习笔记day2
/ 20 位于stdio库下的,用来向控制台输出的函数 %d 表示输出10进制的整数。// 25 位于stdio库下的,用来向控制台输出的函数 %d 表示输出10进制的整数。// 如果变量的类型是char,int,double这样的类型,scanf中需要通过&取地址,如果是指针、数组,直。举例:一个人的年龄(int),一个人的姓名(char[]),一个人的完整信息(struct),10个人的完整信息。我们要使用C语言的语法,就需要引入C语言相应的库,比如系统的标准的输入输出库 。
2024-11-10 18:27:01 951
原创 学习笔记day1
创建文件夹:mkdir 创建单层⽂件夹:mkdir ⽂件夹名 创建多层⽂件夹:mkdir 多层⽂件夹 -p 创建文件:touch touch 需要创建的⽂件名字(⽂件建议添加后缀,可以是路径) 只读方式查看文件内容:cat cat 需要查看的⽂件的名字(可以是路径) 自动补全:快捷键Tab 删除文件夹|文件:rm 删除⽂件夹:rm -r 需要删除的⽂件夹的名字(可以是路径) 删除⽂件:rm 需要删除的⽂件的名字。切换到编辑模式:键盘按键:i 退出编辑模式:键盘按键:Esc → shift+
2024-11-10 18:25:30 187
原创 学习笔记day4
在Linux中,内核将所有的硬件设备都映射成了文件(设备文件),因此对硬件设备的操作就等同于对文件的操作。而文件IO就是对文件的操作。也就是对文件里面的数据进行读取和写入的操作。就以图形图像的显示来说,我们需要把图片文件里面的数据,先读取出来,再写入到开发版的“lcd屏幕对应的设备文件”。这样我们就能在屏幕上显示图片了。我们接触触摸屏之后,系统会将你触摸的数据自动写入到开发板里面的“触摸屏对应的设备文件”。我们是需要到这个文件里,去读取我们想要的数据,就可以获取到我们触摸的具体的位置(x和y坐标)
2024-11-10 18:21:49 505
原创 学习笔记day3
比如说,小明喜欢吃苹果,原计划吃掉5颗苹果,当吃到第3颗的时候,出来一条毛毛虫,小明吓一跳,扔掉这个,继续吃剩下的苹果,知道吃完为止。比如说,小明喜欢吃苹果,原计划吃掉5颗苹果,当吃到第3颗的时候,出来一条毛毛虫,小明吓一跳,不吃了。数组的每一个元素都有一个唯一的索引,从0开始。都只能存储单个的数据,数组的出现就是为了解决这个问题,我们可以使用数组,存储一组数据。// 给数组的第3个元素赋值(写) // {11,22,333,44,55}int array[5] = {11,22,33,44,55};
2024-11-06 17:55:28 537
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人