自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程同步与进程间通信方式

1.全部变量2.信号量:是一种资源,可以被申请、释放、初始化。释放:让资源数+1,不会阻塞。申请:让资源数-1,如果当前资源数为0,申请资源时会阻塞等待,直到资源不为0,才能继续向下执行。Linux内核:PV操作,P申请、V释放。步骤:①sem_t sem ②sem_init(&sem, 0, 1);0为线程间共享,非0为进程间共享。最后一个参数为申请次数。申请 ④sem_post(&sem);释放 ⑤sem_destroy(&sem);销毁。

2024-02-18 18:36:39 254 1

原创 进程和线程

5.进程的创建:在32为操作系统中,进程创建时,操作系统分配0-4g虚拟内存空间,分为:文本段、数据段、系统数据段,常用fork()函数创建,函数原型为:pid_t fork(void),成功在父进程中返回创建的子进程的PID,在子进程中返回0,失败返回-1.4.多线程执行效率大于多进程:因为多线程位于一个进程空间内部,调度任务时不需要切换进程空间,而多进程空间是独立的,任务调度CPU时要在不同的进程空间切换,增大系统的资源开销。1.进程是程序运行的过程,包括进程的创建,进程的调度,进程的消亡。

2023-12-05 18:44:44 1006

原创 标准IO和文件IO

在说IO之前先补充几个常见的命令:1.od -c:按照字符编码显示文件内容,od -c filename2.find:在指定路径下查找文件名,find 路径 -name 文件名3.压缩、解压.tar.bz2文件:①压缩:tar -jcvf 文件名 .tar.bz2 文件夹 /*②解压:tar -jxvf 文件名 .tar.bz24.du:获得指定目录下文件的大小,du -k文件夹(按照kb获取大小);du -m 文件夹(按照mb获取大小)①它是一个工程管理工具。

2023-11-28 21:34:41 972

原创 指针高级和函数高级

注:它的思想就是先把数组第一个元素值传给一个自定义变量,然后把第一个元素的指针和最后一个元素的指针传进去,根据比较让指针移动,当pb > key时,就把值交换然后pb不动,就移动pe,依次循环,直到判断条件pb >= pe结束,就把数组排好了。定义了一个指针,指针指向一个数组,数组有5个元素,每个元素都是int;定义了一个数组,数组的数组名a,a包含了5个元素,元素的类型是int *;void:缺省类型,不能定义void类型变量,void *:万能接收指针,接收任何类型的指针。p:是一个int *指针;

2023-11-13 21:24:40 50

原创 指针、结构体、共用体和枚举类型

我对于指针的理解就是我们定义一个整型a,它在内存中就有一段空间,我们把整型的地址取出来给我们定义的指针,让它也指向a的空间,相当于给a的空间重新分配了一把钥匙,就可以访问到a的空间,然后用*加上我们的指针变量名就可以拿到a空间的值。1.指针的值是一个地址编号,指针具有指向性,具有类型2.地址是用来区分内存中不同字节的地址编号,指针可以直接操作内存。

2023-11-09 19:31:59 225 1

原创 函数、作用域以及生命周期

1.众所周知,一个c语言程序中只能有一个主函数,那就是main()函数,相信对比主函数我们可以看出c语言中函数的定义应为:返回值类型 函数名 (数据类型1, 2, 3,......) //函数首部语句块;return 值;(常量、变量、表达式、函数调用){}之间的为函数体2.函数特点:①封装简化有规律或重复性的代码,提高代码的复用性;②划分模块,提高代码的可读性。3.为什么需要用函数?

2023-11-06 20:48:37 235 1

原创 二维数组、字符型数组和一些字符串处理函数

1、二维数组就是由n个数据类型相同的一维数组所构成的数组就叫做二维数组。2.二维数组的定义:类型名 数组名[M][N];M:二维数组的元素数量,N:二维数组的元素中一维数组的元素数量。3.二维数组的访问:数组名[m][n]。m:访问二维数组的第m + 1(一维数组)元素,n:访问二维数组的第m + 1(一维数组)元素的第n + 1个元素。4.二维数组的初始化:int arr[2][3] = {1, 2, 3};int arr[2][3] = {0}等。注意:没有初始化的元素,初始化为0;

2023-11-05 22:56:25 353 1

原创 一维数组及排序方法

1.数组元素的数量:里面的值为整型常量或者整型常量表达式,不能是变量,但在c89/c99下可以为变量,但是不建议使用。2.数组的初始化:3.数组的存储特性①单一性:数组中的所有元素的类型都必须是相同的②有序性:元素在内存中是有序存放的③连续性:元素在内存中是连续存放的4.数组取值:数组取值的话就是数组名加上要取的位置是第几个,比如按照上面的例子我想取int arry[5] = {1, 2, 3, 4, 5};

2023-11-02 22:40:47 824

原创 常见的分支及循环

1.可以在程序中单独使用if语句,但是else和elseif不能单独使用。2.if条件判断语句下面只有一个语句的话可以省略{},但是不建议省略。3.如果省略了{},else、elseif会向上匹配遇到的第一个并且结合后符合语法的if组合起来。这个例子就说明它会从下到上匹配一个if和它相结合。4.我们平时写if条件判断时,最好把常量写在左边,把变量写在后面,这是因为如果不这样写的话,程序在编译阶段很难找到错误;

2023-10-31 21:04:03 435 1

原创 运算符的优先级以及常见的输入输出函数

1.优先级:单目运算符 > 双目运算符 > 三目运算符 > 多目运算符2.注意:双目运算符里面的赋值运算符 < 三目运算符3.结合方向:一般情况,都是自左至右,特殊:单目运算符、赋值运算符、特殊运算符(三目运算符)是自右至左的。4.注意尽量不要用三目运算符的嵌套,能分开最好就分开写。这可以提高代码的可读性。5.运算符的关系表如下:注:这个表出自谭浩强老师C程序设计的第三版,感兴趣的同学可以下去看一下。6.逻辑运算符&&(逻辑与):一假全假||(逻辑或):一真全真。

2023-10-30 22:08:41 625 1

原创 c程序的编码运行过程以及一些基本的数据类型转换

1.首先,程序第一个先要进入预处理阶段,它主要是处理程序中#开头的相关指令,以程序名为hello.c为例。 2.接下来,就会进入编译阶段,这个阶段会将预处理产生的c语言源程序(.i)编译为汇编语言(.s),命令如下: 3.第三阶段会进入汇编阶段,它是将编译阶段产生的汇编语言翻译为二进制机器语言,命令如下: 4.最后一步就是链接阶段,它是将汇编阶段产生的二进制机器语言链接成可执行的程序,命令如下: 这里app就表示你想要最后生成的可执行程序的名称。可

2023-10-27 23:09:14 107

原创 基本的数据类型介绍

文章开始之前先说一下常量和变量,常量听其名字肯定就是不随着改变的量称为变量,那同理随着改变的量就叫做变量。 在程序中输出符号为%d 默认为int不是short,超出int为long,所以默认所占四个字节。 内存中存储形式 IEEE754,符号位0表示正数,1表示负数。 1.float(%f,单精度浮点型 4B)(1符号位 + 8指数位 + 23尾数位) 2.double(双精度浮点型 8B %lf (1 + 11 + 52)

2023-10-26 22:04:07 127

原创 进制转换以及第一个c程序

【代码】学习嵌入式第二天。

2023-10-25 21:44:48 330

原创 嵌入式基础以及常用命令

嵌入式是以应用为中心,以计算机技术为基础, 软硬件可裁剪的专用计算机系统。 PC:通用型计算机系统。 硬件系统 软件系统 1.运算器 MPU 1.系统

2023-10-24 19:41:51 168

空空如也

空空如也

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

TA关注的人

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