自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux系统 进程

(2)进程的创建:每个进程被创建时,操作系统会为该进程分配4G的虚拟内存空间。pstree:查看进程间的关系 pstree -p(关系族谱可带ID号) pstree -p id号(可查看某id的关系族谱图)当产生子进程后,根据FIFO调度算法,先执行父进程,由于内核的PCB保存了父进程的产生子进程的位置,继续向下执行。1.运行态(用户运行态、内核运行态) R:正在执行,且被CPU任务调度所执行的进程。2.就绪态 R:正在执行,没有CPU任务调度执行的进程(只缺少cpu)。

2025-02-20 17:57:59 1405

原创 文件 I/O

返回值:(成功)文件描述符:操作系统为已打开文件分配的标识符:(小的,非负的整形数据),代表了一个已打开的文件。成功(返回读取的字节数);O_RDONLY(只读) O_WRONLY(只写) O_RDWR(读写) O_CREAT(创建)a O_WRONLY(只写)| O_CREAT(创建)| O_APPEND(追加写)系统默认已打开的三个文件对应的文件描述符:0(stdin),1(stdout),2(stderr)。

2025-02-17 18:58:26 415

原创 Lunux系统2

失败:在读取过程中,如果遇到文件末尾或发生错误,fread 将返回一个小于请求的数据项数量的值。成功:返回当前文件位置指针相对于文件开头的偏移量(以长整型 long 表示)。offset:表示相对于 whence 指定的位置的偏移量,以字节为单位。fseek(打开文件的地址,偏移量,SEEK_END/SEEK_CUR/SEEK_SET)size:要写入的每个数据项的大小(以字节为单位)size:要写入的每个数据项的大小(以字节为单位)功能:函数从指定的内存位置开始,将一块数据写入到指定的文件流中。

2025-02-16 14:25:46 328

原创 标准I/O

(普通文件) :ASCII文件:xxx.c xxx.h xxx.txt。(2) 读文件、写文件 fgetc()/fputc、fgets()/fputs()、fread()/fwrite()"a+" 以读写方式打开,文件不存在:创建,文件存在:可追加写或从头读。"w" 以只写的方式打开,文件不存在:创建,文件存在:清空。"w+" 以读写方式打开,文件不存在:创建,文件存在:清空。"a" 以追加写的方式打开,文件不存在:创建。

2025-02-14 20:11:49 465

原创 数据结构 栈区

被调用函数执行完毕后,系统会从系统栈中弹出之前压入的信息,恢复调用函数的执行现场,继续执行调用函数中后续的代码。栈结构是系统栈的基础,系统栈是栈结构在操作系统中的具体应用,用于支持程序的运行和函数调用等操作。链式栈与顺序栈的时间复杂度均为O(1),但顺序栈需事先确定一个固定的长度,会造成内存浪费,而链式栈对长度无限制,使用起来更灵活。如果栈的使用过程中元素变化不可预料,那么最好使用链式栈,反之,如果它的变化在可控范围内,建议使用顺序栈。满栈:栈顶有数据,入栈时栈顶先向上移,然后将数据装入栈顶;

2025-02-12 10:27:45 368

原创 数据结构 队列

访问方式:访问指针数组元素需先通过数组下标找到对应的指针,再通过指针访问其所指向的数据,如 ptr_array[i] 先取第 i 个指针,再用 *ptr_array[i] 访问指向的数据。定义形式为 数据类型 (*指针名)[数组长度] ,如 int (*ptr)[5] ,表示 ptr 是一个指向包含5个 int 类型元素的数组的指针。- 概念本质:指针数组是数组,是多个指针的集合,数组名代表数组首地址,即第一个指针元素的地址。数组指针是指针,其指向整个数组,指针变量存储的是数组的首地址。

2025-02-12 10:25:04 450

原创 数据结构2

【代码】数据结构2。

2025-02-08 08:48:24 107

原创 数据结构(一)

散列存储(哈希存储):将数据元素的存储位置与关键码之间建立确定对应关系从而实现查找的存储方式。索引存储:通过关键字构建索引表,通过索引表来来找到数据的存储位置。图形结构:元素之间多对多的关系(网状结构)。线性结构:元素之间一对一的关系(数组,链表,队列,栈)。链式存储:采用一组非连续的内存空间保存元素。树型结构:元素之间一对多的关系(二叉树)。(1)声明构建的数据类型 (2)声明函数 (3)定义宏。(2)物理结构:数据的逻辑结构在计算机内存中的存储方式。(1)逻辑结构:数据元素与元素之间的关系。

2025-02-06 20:52:27 415

原创 指针数组和结构体

(2)对结构体中的成员(即“域”),可以单独使用,它的作用与地位相当于普通变量。(3)成员也可以是一个结构体变量。此外,指针的指针还可作为函数的返回值和各种函数的参数,在使用时要注意变量中存放的到底是变量的地址还是指针地址的地址,判断清楚后再搭配*使用。(1)到结构体成员中去查找最长的元素,最终按该元素长度对齐(结构体的最终大小能够整除这个数);(2)每个结构体成员所处的位置(偏移量)必须能够整除该成员的字节数。4.结构体变量的引用:使用结构体成员运算符 (.)一般形式:结构体变量名 . 成员名。

2025-01-22 21:18:27 208

原创 指针与数组

int *q = relloc(p,n),重开n个字节的空间,将p的内容拷贝到新开的空间并且销毁原来的空间。定义与引用函数:一般定义形式:类型类型 (*指针变量名) (类型名,类型名....(函数参数表列)),且调用函数时只能调用与其左右类型,数量都匹配的函数。即int *p = a, 为第一行元素的首地址,p + i 表示第i行元素的首地址,*(p + i) + j表示第i行第j列的元素地址,*(*(p + i) + j)表示第i行第j列的元素。指向数组的指针:int (*p)[10];

2025-01-21 20:33:31 177

原创 c语言模块

字符串和指针:char *p;编译时不会报错但是程序会崩溃,因为字符串存储在字符串常量区,指针p在栈区,字符串常量区只读。const变量 const int i= 10;只读变量,无法通过直接访问来改变i的值;const指针变量 const int *p;无法通过该指针去修改它所指向的值;(表达指针的一种状态,即该指针不能用)。在数组中,指针与指针之间可以想减,表示两个指针之间相隔的元素个数。无法修改指针变量本身的值;

2025-01-20 20:21:27 186

原创 指针的应用

4.数组和指针:指向数组的指针:int*p;(2)从定位初开始向后偏移sizeof基类型个字节;(3)整体地将偏移好的那部分内存空间当作一个基类型变量来看。注意:(1)赋值号两边类型必须相同。(2)int*p;*是类型说明符,不是指针运算符。(3)*必须放在指针变量之前。(4)*p=&i;(5)*&同时出现时,可以抵消。1.形式:基类型*指针变量名。2.用赋值语句使一个指针变量得到另外一个变量的地址,从而使它指向该变量。3.指针变量作为函数参数,传的是地址,可以在被调函数中改变实参的值。

2025-01-19 16:43:45 243

原创 c语言知识

局部作用域:在函数内部就是局部作用域(花括号里面的)。(2)在同哟一作用域内,不得定义同名标识符。(4)在两个或两个以上具有包含关系的作用域中定义的同名标识符,外层标识符在内层不可见。4.条件编译:#if0——#endif,#ifdefDEBUG——#endif:如果定义有效,则编译代码有效。#ifndef——#endif:在头文件中写,避免重复出现,防止多次对同一个头文件包含。3.“文件包含”处理:""和<>绝对路径无区别,相对路径""在当前目录下找,<>在根目录下usr文件夹里面找。

2025-01-17 20:09:03 321

原创 函数的递归调用

实参传递数组首元素地址(在函数中sizeof(a)的值为8字节,a为首元素地址),函数内部无法根据首元素地址计算元素的个数,所以在传参时要把元素个数也传到函数里边。字符型数组作为函数参数时,只需要传数组首元素地址,不需要传元素个数,因为字符型数组判断结束的条件为s[i]!在数组作为函数参数时,它的传参过程是传地址(指针传参),所以可以改变实参,即在被调函数中可以修改主调函数中定义的变量。与整形一维数组相同, 函数内部无法根据首元素地址计算元素的个数,所以在传参时要把元素个数也传到函数里边。

2025-01-16 20:38:22 584

原创 函数及其使用

代码区:用于存放程序的机器指令,也就是程序的代码。当程序被加载到内存中运行时,处理器会从代码区读取指令来执行程序的功能。自定义函数:形式(类型标识符 函数名(形参表列)){声明部分 语句部分},不能在主函数内部定义函数;定义函数在前,主函数在后;调用时:函数定义类型应与调用函数类型相同。全局变量在整个程序运行期间都存在,静态变量根据其类型(静态局部变量或静态全局变量)有不同的作用范围,但生命周期都是整个程序运行期间。栈区(8mb左右):主要存放函数的参数值、局部变量等。函数的作用:降低耦合性,提高复用性。

2025-01-15 20:05:10 300

原创 数组的相关知识

拷贝:strcpy char*strcpy(char*dest,const char*src);连接:strcat char*strcat(char*dest,const char*src);使用头文件include<string.h>2.二维数组:形式:(类型说明符)数组名[常量表达式][常量表达式],a[3][4]:三个一维数组,a[0]是第一格的首地址(&a[0][0]),a是第一行的首地址(&a[0])。如果对全部元素赋初值,可以这样写a[ ][n].

2025-01-14 19:30:29 701

原创 数组的算法

一维字符数组:初始化char c[5] = {'H','e','l','l','o'};小于则会把字符赋给前面的元素,后面为空字符。也可以写成char c[6] = "Hello"。字符串的有效字符为五个,但最后第六个字符是'\0',在程序中可以用(c[i] = '\0')来判定字符串是否结束。"时,用(c[i] = '\0')会导致后面的world丢失。选择排序算法 时间复杂度 n^2。冒泡排序算法 时间复杂度 n^2。原地插入排序 时间复杂度n^2。逆序算法 时间复杂度n。

2025-01-13 20:24:43 380

原创 break语句,continue语句,一维数组。

表示定义了一个整型数组,数组名a,数组里面有n个元素,从a[0]开始,到a[n-1]结束,不存在数组元素a[n]。不能一次引用整个数组,得一个一个的引用数组元素。break语句:循环中断语句,不能单独出现,只能用于循环语句和switch语句中。需要注意越界访问,当数组名后面的下标小于0或者大于等于元素个数时,会将其值放入其中,造成越界访问,导致出现重大bug。continue语句:循环短路语句,结束本次循环,但不终止整个循环的执行。连续性:元素与元素之间没有间隔,在内存中占据一段连续的空间。

2025-01-12 21:50:13 352

原创 选择结构程序设计和循环结构

(1)if(表达式)语句 (2)if(表达式)语句 else 语句 (3)if(表达式1)语句 else if(表达式2)语句 else if(表达式3)语句 ........ else 语句 需要注意if()后面不能加“;2.while语句实现循环:形式是while(表达式)语句。循环三个条件:循环变量初始化,循环的执行条件,使循环趋于结束的语句。

2025-01-10 19:36:49 295

原创 C语言输入输出

3.printf(格式控制,输出控制),格式控制是由双引号括出来的字符串,表达了两种信息:(1)格式说明,由%和格式符组成,如%d(有符号整型打印);%o,%u,%x,%X是以无符号整型八进制,十进制,十六进制输出;%# 打印八进制,十六进制前缀(十进制不加%#);%05d, 用0不宽度(补位字符只能是空格,0);在linux系统中,使用Ubuntu时,可以用(ctrl+shift+t)再开一个终端方便操作,用(alt1/2)切换。

2025-01-09 20:09:44 346

原创 c语言运算符

自增/自减运算符的前置和后置:前置是在原来的内存空间进行运算,后置是会创建临时变量存储原来的数据,在原来的内存空间进行运算。左值是变量,右值为常量。const变量为只读变量,为左值。短整型赋给长整型,符号位扩展,正数补零,负数补1。从低转高,对操作数本身没有影响,但是从高转低会发生数据内容丢失。printf输出浮点型数据时,只能输出小数点后六位,第七位会四舍五入到第六位上。水平方向必转,两个float运算最后会转为double类型。/,%右操作数不能为零。显示转换:(类型)数据,属于强制转换。

2025-01-08 18:52:48 281

原创 C语言中的整型,字符型,和浮点型

整型常量即为常数,有三种形式表示:八进制(0开头),十进制,十六进制(0x)。浮点型数据也分为常量和变量。浮点型变量分为单精度(四字节),双精度(八字节)和长双精度(十六字节),浮点型数据存放和整型数据的存储方式不同,浮点型由符号位+阶码+尾数。阶码是转换为二进制小数后,进行科学记数法,2的阶数+127,尾数是小数点后的数。\n换行,\t水平制表符(占8位,有内容占用时,不影响制表),\b退格(退回前一格,不影响输出内容,但是插入新内容时,会覆盖),\r光标至于开头,不影响输出内容,插入新内容,会覆盖。

2025-01-07 19:13:46 333

原创 【无标题】

使用vi文本编辑器时,命令模式,不能对内容进行修改,但是可以进行命令语句,yy是复制,dd是删除,可以在前面加数字来进行多层操作。进去插入模式用i,esc是退出插入模式回到命令模式,要记得保存:w,退出是:q。还有删除指令(rm),拷贝指令(cp),需要记住的是:面对文件夹时,要在后面加上-r,文件则不需要。ls是列出当前目录里的文件或文件夹,ls -l更加详细的列出文件的情况,ls -a是列出当前所有文件,包括了隐藏文件。在打代码的时候清楚的了解当前工作目录,更好的使用相对路径和绝对路径。

2025-01-06 19:24:15 166

空空如也

空空如也

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

TA关注的人

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