- 博客(17)
- 收藏
- 关注
原创 20240819嵌入式学习笔记
一个时间片结束,当前执行的进程被挂起,PCB被从内存中拷贝至硬盘暂存,另一个进程PCB被拷贝至内存中,并在下一个时间片中执行,以此循环,直到进程结束,不再执行。根据单CPU特点,由操作系统对资源进行调度,同一时间只能只能一条进程,但得益于CPU计算的高速,一小段时间可以执行多条进程,从宏观上可以理解为并发。调用时fork函数会直接读取当前进程的PID,来确定创建的进程(子进程)与当前进程(父进程)的关系。fork函数创建了一个与父进程密切相关的子进程,此时两个进程同时存在,但具体代码在同一片空间中,因此。
2024-08-19 22:11:02
240
原创 20240809嵌入式学习笔记
需要使用结构体指针指向具体成员时,使用" . " 运算,需要使用成员内容时,使用" -> "运算。结构体的数据输入和访问一般通过指针来操作。为方便运算,使用指向结构体成员运算符“ -> ”用于描述复杂数据的一种数据类型。成员列表:用来描述复杂数据中用到的的成员变量,多成员间用分号隔开。使用方法:结构体变量名 . 成员名。表示访问结构体的成员。struct:关键字,表示在构造一个结构体的类型。结构体名:一个名称,用来描述结构体这个类型。根据各个成员变量类型和顺序,依次初始化。结构体成员运算符:“ . ”
2024-08-13 16:47:29
218
原创 20240807/08嵌入式学习笔记
比如在对字符串进行比较时,参与比较的是字符串,但在strcmp函数中的是字符串的地址,即指针数组中的元素;在对字符串进行交换时,交换的也是字符串的地址,而不是字符串本身。定义一个数组,其中存放的是保存在常量区(静态区)的字符串的地址。函数的标识符,即函数名就是函数的地址。数组的标识符p即为数组的首地址,通过对首地址进行偏移,可以得到数组中的元素;如果对只进行一次“星运算”,得到的结果是行的首地址,对行首地址继续进行“星运算”才能得到具体的某一个元素。数组中存放的是数据,指针数组中存放的是数据的地址。
2024-08-08 20:47:22
486
原创 20240806嵌入式学习笔记
数组定义后首地址为一个常量,但指针是一个变量,可以自加自减运算。指针的一大作用为通过间接访问对变量进行修改,利用这一特性可以弥补函数数值传递时无法修改函数外变量值的不足。指针类型标识符前加一个星号,表示标识符到表达数据类型为指针类型。但传入的是地址,在被调函数中经过*运算间接访问才能修改变量的值。指针加减一个数表示跳过了几个基类型,只能对常量或同类型指针进行做差,但对同类型指针不能用加法、乘法、除法。指针变量中存放的数据为地址,在赋值时要对变量取地址后将地址赋值给指针变量。一.通过指针迭代打印数组元素。
2024-08-06 19:35:22
235
原创 20240805嵌入式学习笔记
宏的语法为 "#define 标识符 字符串"。//宏定义一般将宏名大写,用以区分常规变量。预处理实质是将字符串以外的宏名用宏值进行原样替换。#undef:取消宏定义,用于结束宏生命周期,只有在作用域#define和#undef之间的宏名才会被原样替换。int r = 4;//定义一个宏用来表示圆周率,可以供不同运算使用带有参数的宏,实质上依然为原样替换。语法为 ”#define 宏名(参数) 宏值“//带参宏定义。
2024-08-05 21:48:30
898
原创 20240802嵌入式学习笔记
可以想象a在sum函数中将会不断减小,直到为1,此时才有了确定的值“sum(1) + 1”,作为确定值,他的上一层“sum(2) + 2“也才成为确定值,最终一层一层向上返回确定值,最终回归到开始的第一层”sum(a) + a“,将其作为返回值传递给主函数。main函数是程序的入口,只能在在主函数中调用其他函数,但主函数不能被调用。y“,表示向函数传递地址,函数接收到地址后的操作直接在原数组的内存空间上进行操作,相比传递值的方式,址传递的方式效率更高,但更加复杂。堆:手动申请,手动释放的大空间。
2024-08-02 21:28:01
315
原创 20240801嵌入式学习笔记
定义函数的位置可以在main函数之前,也可以在main函数之后。如果在main函数之后定义,需要在main函数前对函数进行声明。在标准C语言中不支持将函数写在main函数中的写法。代码示例:求和函数。
2024-08-01 21:23:24
323
原创 20240731嵌入式学习笔记
字符串可以理解为字符数组,但在结尾有特殊的' \0 '结束符,表示字符串的结束。字符串的长度指结束符' \0 '之前的字符的个数,不包含结束符的长度。dest表示目标字符串,src表示源字符串。可以将字符串拼接到目标字符串,也可以将字符串常量拼接到字符串。用于从键盘上获取字符串,但输入超过字符串空间时会发生越界,对相邻空间进行写数据,且编译时不会报错,不推荐使用。dest表示目标字符串,src表示源字符串,函数表示将src字符串复制到dest字符串。str表示字符串的标识符,函数返回值为字符串的长度。
2024-07-31 21:28:36
282
原创 20240730嵌入式学习笔记
取出第三低位数,判断次低位数据是否大于第三低位数据,如果大于则将次低位数右移一位到第三低位,此时原先第三低位数变为次低位数,此时判断最低位数是否大于次低位数,如果大于则将最低位数右移一位到次低位,此时原先次低位数变为最低位数。冒泡排序的思路为,确定最大值:取出第一个数据,向右与下一位相邻数据进行比较,通过交换将其中较大的值放置在高位,将其中较大的值与向右下一位相邻数据进行比较,通过交换将其中较大的值放置在高位,以此循环,直到与最高一位比较完。是用二分法进行查找的前提为数据为有序排列,否则二分法将无意义。
2024-07-30 21:36:23
836
原创 20240727嵌入式学习笔记
0 < a 的大小关系成立,逻辑值为真,即 1 ,所以表达式看作 0 < 1 ,大小关系不成立,逻辑值为假,所以最后的输出值为 0。但需要注意的是,条件运算的优先级高于赋值运算,因此在表达式2和表达式3中进行赋值操作时,会出现结合错差。下列代码中加法运算优先级高于关系运算,先由加法运算符进行结合: c = ( 1 + a ) >= b ,c = 2 >= 2 ,c = 1。但在或运算中,只需要一个值就可以得出整个表达式的值,因此,第一个值为逻辑真时,直接得出结果为真,或运算符右边的表达式不经过计算。
2024-07-28 18:37:37
698
原创 20240726嵌入式学习笔记
对于整型变量有多种占位符可供使用:%d(转换为有符号十进制形式)、%u(转换为无符号十进形式)、%o(转换为八进制形式)、%x(转换为十六进制形式)、%X(转换为大写十六进制形式)。%f(float类型)、%lf(double类型)、%Lf(long double类型)、%ld(long类型)、%lld(long long 类型)。对于浮点型变量占位符有三种形式:%f(转换为十进制小数形式,默认保留六位小数)、%e(转换为科学计数法形式)、%g(转换为简洁形式,省略无意义的零)。%#o将内容转换为八进制。
2024-07-26 21:15:05
881
原创 20240725嵌入式学习笔记
i++:自加之前,在内存空间中开辟一片新空间,用于存放自加后的值,但此时如果调用i的值,得到的仍为原值;只有当完整运算过程结束后,新空间中的值才会赋给原空间中的值,赋值结束后,新空间中的内容被释放。在n前添加一个反斜杠' \ ',组成新的字符' \n ',这种用反斜杠和字符组成的新字符我们称之为转义字符,在代码中有特殊的用途。为了遵循“高内聚,低耦合”的原则,编程前可以通过绘制流程图的方式来整理思路,明确每一步操作的内容,避免不同层次之间的操作出现交叉。赋值运算的结果就是被赋值的变量的值;
2024-07-25 21:12:19
861
原创 20240724嵌入式学习笔记
命令模式下输入命令“YY”,可对光标下一行内容进行复制,在命令前加入数字N,则可以复制N行内容;输入命令“P”可以将复制过的内容粘贴至光标下一行。同样的,在“P”命令前加入数字M ,可以将以复制内容粘贴M次;在命令模式下输入“SHIFT + V“,可以进入【visual block】模式,即块模式,。在该模式下可以通过方向键,以光标所在行为初始行,以行为单位进行选中。选中后可以通过”Y“ + M”P“命令进行复制粘贴。
2024-07-24 20:53:46
849
原创 20240723嵌入式学习笔记
Unix可追溯至通用电气、贝尔实验室与麻省理工共创的multics项目,此项目旨在开发一个交互式操作系统,但各方面受限,最终项目草草收场,由贝尔实验室接手,最终开发为Unix系统,并不断流传开来。默认命令模式,按“i”进入编辑模式,完成编辑后按“esc”退出编辑模式,重回命令模式,输入“:”进入底行模式,输入wq保存并退出。默认在当前目录下创建,也可指定目录创建,可一次创建多个目录,用空格分隔开,可创建多级目录。拓展:ls -a 查看目录下所有文件,包含隐藏文件。mkdir 目录名1 目录名2 目录名3。
2024-07-23 19:42:11
435
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人