- 博客(25)
- 收藏
- 关注
原创 Linux下的软件编程——文件IO
文件IO的打开方式:O_RDONLY:只读方式 O_WRONLY :只写方式 O_REWR:可读写方式 O_CREAT:创建文件 O_TRUNC:清空文件 O_APPEND:追加写。(3)文件关闭刷新(4)缓冲区满刷新。
2025-08-12 19:38:23
473
原创 Linux下的软件编程——标准IO
Linux下的软件编程:1.文件操作—> 一切皆文件 2.多任务—> 进程,线程3.网络编程 4.构建网络服务器5.数据库。
2025-08-10 20:19:41
566
原创 数据结构——重点
数组和链表是两种基本的数据结构,它们在内存管理、访问方式和操作效率等方面存在显著差异。以下是两者的主要区别:1. 内存分配方式:在内存中需要存储所有元素。创建时需要预先确定大小,一旦分配后大小固定(静态数组)。:元素可以分散存储在内存中的,通过指针连接各个节点。内存分配是动态的,可以随时扩展或缩减。2. 访问效率:支持,通过下标可以直接访问任意元素,时间复杂度为O(1)。:只能,需要从头节点开始遍历到目标位置,平均时间复杂度为O(n)。3. 插入与删除操作。
2025-08-08 20:18:05
703
原创 数据结构——二叉树
例如,第1层(根节点)有1个节点,第2层最多2个节点,第3层最多4个节点。思想:先选取一个基准值,然后将比它大的排到右边,比它小的排到左边,在进行递归调用,:若终端节点数为n0,度为2的节点数为n2,则n0 = n2 + 1。中序:左根右,先从根开始(不是先访问根)从左开始访问,再访问根,再访问右结点。后序:左右根,线从根开始(不是先访问根)从左开始访问,再访问右,再访问根。思想:将相邻的元素进行比较,内部循环一次,最大的树到最后一个。前序:根左右,先访问根然后访问左,再访问右。
2025-08-08 20:06:34
296
原创 数据结构——哈希表(散列表)
存储数据时,通过对应的哈希函数可以将数据映射到指定的存储位置,查找时。哈希冲突/哈希矛盾:key1!= key2 f(key1) = f(key2)哈希存储:将要存储的数据的关键字和存储位置之间,建立起对应的关系,这个关系称之为哈希。仍可通过该函数找到数据的存储位置。定义:提高数据的查找效率。
2025-08-07 20:12:09
292
原创 数据结构——内核链表,栈,队列
二级指针:1.在被调函数中,想要修改主调函数中的指针变量,需要传递该指针变量的地址,形参用二级指针。2.指针数组的数组名是一个二级指针,指针数组的数组名作为参数传递时可用二级指针接受指针数组,保存多个指针的数组。数组名:数组首元素的地址。
2025-08-06 21:22:47
712
原创 数据结构——Makfile与双向链表
^ : 所有依赖 $< : 第一个依赖 $@ : 生成的目标。4.链接:处理多文件及函数的链接关系。Makefile的语法:gcc main.c fun.c -o a.out -I$(INC) -L$(LIB)依赖文件:main.c fun.c。-L:指定使用到的库所在的位置。-I :指定头文件所在的位置。时间戳:在编译代码时,只编译修改后的源文件,其他没有修改的,只进行链接即可。Makefile:用来管理代码的编译和链接。Makefile中的变量:1.自定义变量。
2025-08-05 20:58:23
783
原创 数据结构——数据结构概念以及单向链表
散列结构(哈希结构):将数据的存储位置与数据元素之间的关键字建立起对应的关系(哈 希函数),根据该关系进行数据存储和查找。线性关系:数据元素与元素之间一对一的关系(存储在数组中的数据)->(顺序表,链表, 队列,栈)数据在内存当中如何存储 (1)变量 (2)数组(顺序表)b.插入和删除元素方便。图形结构:数据元素与元素之间多对多的关系(网状结构)
2025-08-03 22:47:15
589
原创 C语言——结构体,共用体和位运算
(1)如上面已经定义了一个结构体类型struct student,可以用它来定义变量。例如:struct student student1,student2。在定义了变量之后系统会为其分配内存单元(2).在声明类型的同时定义变量int id;它的作用与第一种方法相同。(3).直接定义结构体类型变量其一般形式为:struct成员表列}变量名表列;结构体类型:类型与变量是不同的概念,只能对变量赋值,存取或运算,而不能对一个类型进行赋值,存取或运算。
2025-07-31 23:51:30
813
原创 C语言——指针(4)
标准函数 int main(int argc,char **argv)利用指针的指针对字符串进行遍历,逆序,选取最大的字符串,进行排序,在堆区中动态内存分配,利用malloc函数和realloc函数。char **argv 表示字符型数组当中有argc个元素。函数指针:指针数组作为函数的参数,形参是指向指针的指针。在一维整形数组当中进行动态内存分配。利用函数的回归调用来根据需求选取元素。double 类型的。
2025-07-30 22:25:02
165
原创 C语言——指针(3)
strcpy函数与memcpy函数的区别: memcpy函数是一个用于内存复制的函数,它不仅限于字符串,它可以复制任何类型的数据;在指针前无法通过该指针改变它所指向的变量。void *p: 万能指针 但是不能做指针运算。数组指针:int (* p)[10];两数相等: 1.值相同 2.在内存中是同一个东西。二维数组作为函数参数传递,形参是一个指向一维数组的指针。const: 在普通变量前面是只读变量。指针函数:返回值为指针的函数。
2025-07-29 19:19:06
260
原创 C语言——指针(2)
一个变量有地址,一个数组包含若干个元素,每个数组元素都在内存中占用存储单元,他们都有相应的地址。指针变量既然可以指向变量,当然也可以指向数组元素。所谓数组元素的指针就是数组元素的地址。※对指针可以进行加法运算及p + 你,其结果依旧是一个指针,新的地址是在原来的地址值基础上加n*sizeof(基类型)个字节。C语言规定:如果指针变量p已指向数组中的一个元素,则 p + 1指向同一个数组的下一个元素,而不是将p的值+ 1。C语言规定数组名代表数组中的首元素的地址。
2025-07-28 23:30:37
201
原创 C语言——预处理命令、指针(1)
它的作用是在本程序文件中用指定的标识符PI来代替3.1415926这个字符串,在编译预处理时,命令将所有的PI都用3.1415926来代替,这种方法使用户能用一个简单的名字代替一个长的字符串,因此把这个标识符称为“宏名” #define是预处理命令。它的作用是若所指定的标识符已经被#define命令定义过,则在程序编译阶段编译程序段1,否则编译程序段2 其中else部分可以没有。这种形式与第一种形式的作用相反。对带参数的宏的展开只是将语句中的宏名后面括号内的实参字符串代替#define命令行中的形参。
2025-07-27 22:01:25
228
原创 C语言——函数(2)
可以用二维数组名作为函数的实参或形参,在被调用函数当中对形参数组定义时可以指定每一维的大小,也可以忽略第一维的大小说明。全局变量: 函数外部定义的变量,他可以被程序中的任何函数访问,全局变量的空间不在栈上在静态区上。4.在两个或者多个具有包含关系的作用域中定义的同名标识符,外层标识符在内层不可见。标识符的作用域和可见性:1.局部作用域(花括号括起来的范围)2.全局作用域(整个程序中都有效的变量)全局变量,静态生存期的static:限制变量或函数的适用范围在本.c当中。函数的形参属于局部作用域。
2025-07-25 23:29:36
205
原创 C语言——函数(1)
在定义函数时函数名后面括号中的变量名称为“形式参数”,在主调函数中调用一个函数时,函数后面括号中的参数称为“实际参数”。函数的返回值:希望通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值。函数的返回值是通过函数中的return语句获得的。函数调用的三种形式:1.函数语句:把函数调用作为一个语句 2.函数表达式:函数出现在一个表达式中,这种表达式称为函数表达式 3. 函数参数:把函数作为一个实参。函数不能嵌套定义但是可以嵌套调用,就是在调用一个函数的过程中,又调用另一个函数。
2025-07-24 23:46:45
326
原创 C语言——数组(二维数组)以及函数的一小部分
在C语言中,子程序的作用是由函数来完成的,一个C语言程序可由一个主函数和若干个其他函数构成。由主函数调用其他函数,其他函数也可以相互调用,同一个函数可以被一个或多个函数调用任何多次。例如:int a[3] [4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};即在定义函数时是分别进行的,是相互独立的。一个函数并不从属于另一个函数。4.如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但是第二维的长度必须指定。
2025-07-23 23:26:30
213
原创 C语言——数组(字符型数组)
其作用是连接两个字符数组中的字符串,把字符串2放到字符串1后面,结果放在字符数组1当中,函数调用后得到一个函数值——字符数组1的地址。s是字符数组,100是这个数组的容量,Hello\0是数组中存放的字符数据。他是测试字符串长度的函数,函数的值为字符串中的实际长度(不包括'\0'在内)他是“字符串复制函数”,作用是将字符串2,复制到字符串1上面去。其作用是将一个字符串(以'\0'结束的字符序列)输出到终端。对字符数组的初始化,的方式是逐个字符赋给数组中的各元素。2.strlen函数。3.strcpy函数。
2025-07-22 18:27:35
204
原创 C语言——数组(一维数组)
用一个统一的数组名和下标来唯一的确定数组中的元素。算法复杂度:表示算法执行时间随输入规模𝑛n增长的函数关系,通常用大O符号表示。(2)在定义数组时需要指定数组中的元素个数,常量表达式用来表示元素的个数。数组在内存中存放的特性:1.单一性(字节大小均相同)2.连续性 3.有序性。他表示定义了一个整形数组,数组名为a,常量表达式中有10个元素。冒泡排序:两个相邻元素两两比较,小的放前,大的放后。空间复杂度:表示算法运行过程中额外占用的存储空间与n的关系。数组的数组名代表的首元素的地址。
2025-07-21 21:07:17
155
原创 C语言——循环控制
循环的必要条件:表达式1:循环变量初始化语句 表达式2:在使用循环时,必须要有循环的 执行 表达式3:使循环趋于结束的语句。他是这样执行的:先执行一次指定的循环语句,然后判别表达式,当表达式的值为真时,然后重新执行循环体语句,如此重复,直到表达式的值为0为止,此时循环结束。区别:continue语句只结束本次循环,而不是终止循环的执行,而break语句是结束整个循环的过程,不再判断执行的条件是否成立。break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。
2025-07-20 20:41:06
306
原创 C语言——选择结构程序设计
在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。3.当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case 后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。若在if语句中,当被判别的表达式的值为“真”或“假 ”时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。第二三种if语句中,在每一个else前面都有一个分号,整个语句结束有一个分号。
2025-07-19 00:27:13
340
原创 C语言——顺序程序设计
C语言本身不提供输入输出语句,输入输出是由C函数库中的函数来实现的 如:printf(格式输出)语句和scanf(格式输入)语句putchar(输出字符)getchar(输入字符)格式说明总是有%和格式字符组成 普通字符即需要原样输出的字符 输出表列是需要输出的一些数据,也可以是表达式。2.可以指定出入数据所占的列数,系统自动按它截取所需的数据(*附加说明符,表示跳过他指定的列数)9.%f 用来输出实数,以小数形式输出。地址表列是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。
2025-07-17 20:41:45
390
原创 C语言——字符型数据,变量赋初值,各类赋值类数据间的混合运算以及算术运算赋值运算
隐式转换:char, short必隐式转换为int float必隐式转换为double。必须整形或与整形相关的类型。例如:ABCDE\r123\a\n → 123DE。符号位扩展:有符号补位的符号位 无符号的补0。\t 水平制表(跳到下一个Tab的位置)\n 换行,将当前位置移到下一行开头。\r 回车,将当前位置移到本行开头。临时变量(匿名变量):不能被赋值。\\ 代表一个反斜杠字符“\”算术运算符 + - * / %自增 : ++i 先加再用。一.转义字符及其应用。
2025-07-16 22:34:48
146
原创 C语言——数据类型,运算符与表达式
整型变量:short(2个字节) ,unsigned short(2个字节) ,int(4个字节) ,unsigned int(4个字节) ,long(8个字节) ,unsigned long(8个字节) ,long long(8个字节) ,unsigned long(8个字节)取变量的补码,正数的补码是他的本身,负数的补码是他的反码+1。Bit 比特, Byte 字节,8比特=1字节,名字只能由数字,字母,标识符构成,并且开头不能是数字。整形数据:C语言的比特遵守小端存储。
2025-07-15 18:57:55
193
原创 Linux的入门学习及各种命令的用法
ls是列出所在目录的内容,pwd是显示你所在的目录,mv是移动文件或目录,mkdir是创造新的目录,touch是创造新的文件,cp是将文件或目录复制到另一个文件或目录当中,rm是移除文件或目录。学习到了使用vi来编写C语言程序,利用命令vi来启动vi编写程序,点击i可以从命令模式转换到编辑模式,点击esc可以从编辑模式转换到命令模式,在命令模式当中使用:w将程序存盘,:q退出程序,:wq保存并退出程序,q!编写顺序:1.编写vi 2.编译gcc 3.运行终端。在命令模式当中可以进行复制,粘贴,剪裁。
2025-07-14 18:59:30
187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人