自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 strchr strrchr strpbrk

文章目录一、strchr1、表头文件2、定义函数3、函数说明4、返回值5、eg二、strrchr函数说明三、strpbrk函数说明eg一、strchr1、表头文件#include<string.h>2、定义函数char *strchr(const char *s,int c);3、函数说明strchr()用来找出参数s字符串中第一个出现的参数c的地址,然后将该字符出现的地址返回4、返回值找到指定字符返回该字符地址,否则返回05、eg#include<stdio.

2022-03-03 20:09:26 130

原创 指针、字符串

文章目录一、指针的作用1、对指针的理解(指针是什么?)1、语法作用2、功能作用2、问题:地址为什么分为不同类型?——不同类型的指针变量保存不同步长的地址二、*与&支持的运算符:2、&p 如何保存三、多级指针四、野指针五、字符串二、使用步骤1.引入库2.读入数据总结一、指针的作用1、对指针的理解(指针是什么?)1、语法作用指针是一种数据类型,它可以定义变量,变量保存的值是地址,由于地址是固定长度,所以指针变量的长度是固定长度,不同地址的步长不一样,需要不同指针类型的变量来保存i

2022-03-01 16:37:46 245

原创 循环语句、多支路、goto

文章目录一、if用法1、if使用注意事项二、while、for、do while用法1.嵌入式中的死循环使用的注意事项统计9的个数2、do while三、多路分支语句switch1、break vs continue(循环语句)四、goto语句一、if用法1、if使用注意事项1、条件,成立是非零2、if后面“;”问题3、判断相等时,将常量写到左边4、规范:if必须匹配else5、if条件中运算符的优先级7、判断条件的零值比较#include<stdio.h>int main

2022-02-24 14:47:28 138

原创 C语言历史、特点、数据类型

文章目录C语言的知识体系学习目标:学习要求一、pandas是什么?二、使用步骤1.引入库2.读入数据总结C语言的知识体系一、C语言概述(历史、特点、标准)二、数据类型(基本数据类型、输入输出)三、基本语句及表达式、运算符(条件语句、循环语句、多路分支、goto语句、i++、++i)四、数组(一维数组、二维数组、三维数组)五、指针(一维指针、多维指针、数组指针、指针数组、函数指针、函数指针数组)六、内存管理(内存泄露)七、函数(函数声明、定义、调用、库函数使用(字符处理函数、时间函数、随机

2022-01-07 15:51:53 425

原创 2021-05-06

文章目录一、pandas是什么?一、pandas是什么?嵌入式底层驱动开发进度:系统移植:1、2、3、9、10、11、13、14、15(了解)驱动:1-18(熟悉)

2021-07-22 16:21:52 195

原创 一、二、三、指针数组

文章目录数组数组#include <stdio.h>void print1(char *ptr){}void print2(char (*str)[100]){}void print3(char (*ktr)[2][100]){}void print4(char **wtr){}int main(){ char ptr[100]="hello world"; //ptr:一维数组首元素的地址 ptr + 1----1跳一个字节 //&a

2021-05-07 15:30:51 72

原创 C语言 goto while 数组

文章目录一、循环控制结构程序goto语句是一种无条件转移语句使用格式egwhile语句使用格式eg二、数组二、数组一、循环控制结构程序goto语句是一种无条件转移语句使用格式goto 语句标号eg#include<stdio.h>void main(){ int i,sum = 0; i = 1;loop:if(i <= 100) { sum = sum + i; i++; goto loop;//跳转 } printf("%

2021-05-03 21:27:44 121

原创 嵌入式笔记24 命名空间 输入和输出 C++对C的升级

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、命名空间二、使用步骤1.引入库2.读入数据总结一、命名空间1. 解决命名冲突1、c语言中解决命名冲突的方法:使用static关键字作用:修饰局部变量:延长局部变量的生命周期,程序结束后再释放修饰全局变量:该全局变量只能在本文件访问,不能在其他文件访问修饰函数:该函数只能在本文件调用,不能在其他文件调用2、c++语言解决命名冲突:命名空间命名空间的定义:namespace 名字{变量、函数}命名空间的使用:

2021-04-21 14:06:45 298

原创 嵌入式笔记23 TCP客户端的实现

文章目录一、TCP客户端的实现connect函数头文件函数原型功能返回值recv函数和send函数头文件函数原型send功能recv功能shutdown函数头文件函数原型功能返回值无法绑定解决二、UDP协议的C/S实现UDP通信过程广播一、TCP客户端的实现1、用socket创建的套接字文件,指定使用TCP协议2、调用connect主动向服务器发起三次握手,进行连接3、调用read(recv)和write(send)收发数据4、调用close或者shutdown关闭连接connect函数头文

2021-04-16 14:13:38 98

原创 嵌入式笔记22 UDP C/S、B/S架构 TCP服务器实现过程

文章目录一、UDP特点缺点报文格式长度二、C/S架构优点缺点三、B/S优点缺点二、TCP服务器实现过程实现过程socket函数头文件函数原型返回值功能bind函数头文件函数原型功能返回值结构体listen函数头文件函数原型功能返回值accept函数功能返回值一、UDP特点无连接不可靠缺点1、无连接,减少了开销和发送数据前的延迟2、尽最大努力进行交付(不保证可靠交付),主机不需要维持复杂的连接状态表3、面向报文:发送方的UDP对应用程序交下来的报文,在添加首部之后就向下交付给IP层,既不拆分也不

2021-04-16 14:12:23 396 1

原创 嵌入式笔记21 通信协议 IP TCP

文章目录一、实现网络通信需要哪些支持1.通信设备2.通信协议二、什么是通信协议,作用?1.协议存放点2.网络模型3.协议作用4.各层作用5.分层的好处6.协议栈作用三、IP1.IP地址即范围2.IP分类(公网、私网)3.如何解决IP地址慌四、TCP1.TCP特点2.TCP报文格式:3.校验方式4.TCP如何建立连接一、实现网络通信需要哪些支持1.通信设备1、网卡:pc机自带2、交换机、路由器3、光纤、电缆、基站2.通信协议1、操作系统自带协议栈(Linux的特点:丰富的网络协议)2、裸机开

2021-04-15 08:35:13 294

原创 嵌入式笔记20 链表(任务队列 线程池)

文章目录一、多线程存在的问题二、使用步骤1.引入库2.读入数据总结一、多线程存在的问题1、进程所支持的线程数量问题(受限)2、线程的创建和销毁的开销问题任务队列为空时,线程池里的线程阻塞等待任务里的线程队列不为空,线程池里的线程处理任务任务队列为满,不能添加新的任务线程池里线程的数量任务队列的大小任务队列的锁int thread_num / /已开启的线程数量void *(*func)(void *arg);//任务行数、struct job *next;//定义指针str

2021-04-15 08:33:51 267

原创 嵌入式笔记19 线程同步 线程信号量 条件变量

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、线程同步1.互斥锁二、线程信号量1.线程信号量使用步骤一、线程同步互斥锁,线程信号量,条件变量1.互斥锁1、定义一个互斥锁(也是一个变量)pthread_mutex_t mutex;2、初始化锁:预设互斥锁的初始值pthread_mutex_mutex = PTHREAD_MUTEX_(INITIALIZER)(不常用)int pthread_mutex_init(pthread_mutex_t *restri

2021-04-15 08:22:34 131

原创 C语言语句分类 字符数据的输入输出 if switch语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录顺序程序设计一、C基本语句介绍C语句分类二、字符数据的输入输出1.putchar 函数(字符输出函数)顺序程序设计程序可分为三种基本结构顺序结构分支结构循环结构一、C基本语句介绍C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的C语句分类1、表达式语句:表达式语句由表达式加上分号“;”组成一般形式: 表达式;执行表达式语句就是计算表达式的值eg:x=y+z;赋值语句y+z;加法运算语句,但计

2021-04-12 22:06:00 1069

原创 嵌入式笔记18 主动退出 分离函数 进和线区别

文章目录一、主动退出二、使用步骤1.引入库2.读入数据总结一、主动退出pthread_exit()头文件#include <pthread.h>void pthread_exit(void *retval);1、功能线程调用这个函数时,可以主动退出(终止)它和exit()很像,exit()是终止整个程序,而pthread_exit()是终止次程序(并未终止整个进程)如果你在次程序里面调用错误,调用的是exit(),整个线程就终止了2、返回值成功返回 0,二、使用步骤

2021-04-09 14:11:31 83

原创 嵌入式笔记17 线程 创建线程

文章目录一、消息队列1.消息队列2.posix的消息队列和系统V消息队列的区别二、线程1.什么是线程2、为什么要学习线程3、线程由哪些组成4、线程的特点三、创建线程一、消息队列1.消息队列消息队列:传送有格式的消息流多进程网络交叉通信,实现大规模数据通信使用内核中的链表(实现机制)2.posix的消息队列和系统V消息队列的区别消息队列是随内核持续的二、线程1.什么是线程线程是进程的一个实体,它是程序运行的最小单位(线程在进程之间时可以相互通信,通过全局变量)2、为什么要学习线程1

2021-04-02 17:43:44 539

原创 嵌入式笔记16 信号 开辟共享内存

文章目录一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('igno

2021-04-02 14:06:05 97

原创 C数据类型 基本数据类型量 整型数据

文章目录一、C语介绍1.C语言作用2、程序介绍二、C数据类型1.数据类型介绍三、基本数据类型量1.常量和变量2.符号常量3.变量四、整型数据1.整型常量2.整型变量一、C语介绍1.C语言作用2、程序介绍void main(){printf(“世界,您好!”);}main是主函数的函数名,表示这是一个主函数每一个C源程序都必须有,且只能有一个主函数(main函数)函数调用语句,printf函数的功能是把输出的内容送到显示器去显示。printf函数是一个由系统定义的标准函数,可在程序中直

2021-04-01 22:52:42 684

原创 通过管道实现两个进程间的通信

通过管道实现两个进程间的通信代码readfifo.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/wait.h>#include<fcntl.h>#include<sys/stat.h>#include<string.h>#include<errno.h&gt

2021-04-01 11:25:21 242

原创 嵌入式笔记15 wait函数 进程间的通信方式

文章目录一、wait函数1.wait函数二、使用步骤1.引入库2.读入数据总结一、wait函数1.wait函数1、wait函数:将当前进程挂起,等待信号来临,再继续进行用来等待子进程的结束二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings(

2021-03-30 08:29:08 235

原创 嵌入式笔记14 进程分类、属性、状态转换 kill命令 fork函数用法 多进程优缺点

文章目录一、进程控制1.介绍2.进程的分类3.进程的属性二、kill命令1.kill使用格式三、进程的状态转换一、进程控制1.介绍1、什么是进程:进程是可并发执行的程序,是一个在数据集合上运行的过程当一个程序开始执行后,在开始执行到执行结束的这段时间里,它内存中的部分被称为进程通俗讲:程序:在硬盘上的可执行文件进程:在执行中的文件2、什么是并发多个进程同时运行,多个任务同时进行3、虚拟内存Linux虚拟内存管理技术物理内存:实际在处理器中的内存模块, 几百M将硬盘中的一部分存储单

2021-03-27 13:47:55 287 1

原创 嵌入式笔记12 lseek ftruncate fopen fread fseek 用法

`文章目录一、lseek1.lseek用法介绍2.ftruncate的作用二、使用步骤1.引入库2.读入数据一、lseek1.lseek用法介绍lseek:用来调整光标的位置lseek(文件描述符,光标移动的位置数,光标移动的形式)SEEK_SET:将光标移动到文件开头再增加相应的offset位置SEEK_CUR:将光标移动到文件的当前位置再往后加offset的位置SEEK_END:将光标移动到文件的末尾再增加offset的位置lseek函数返回值:返回值是从文件开头到光标位置有多少个字

2021-03-26 14:13:27 395

原创 嵌入式笔记11文件编程 open函数 write函数

学习目标:文件编程 进程线程编程 TCP/UDP操作系统内核介绍学习内容:文件编程 进程线程编程 TCP/UDP1、Linux文件:文件本身包括的数据(打开文件可以看到的数据信息)2、文件属性(元数据:文件的访问权限,文件的大小,创建日期等)(查看文件属性)目录也是文件之一(当创建一个新的目录的时候,系统自动创建两个文件项)操作系统:内核:操作系统对于软硬件和系统资源分配的最重要的核心部分系统调用:操作系统提供给用户的一组“特殊”的接口,用户可以通过这组接口来获取操作系统内核

2021-03-26 14:08:56 441 1

原创 嵌入式笔记13 putchar printf scanf的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、写字符家族介绍(fputc)1.参数介绍2.putchar使用二、使用步骤1.引入库2.读入数据总结一、写字符家族介绍(fputc)1.参数介绍fputc:将某一字符写入文件流int fputc (int c, FILE*stream);putc:宏putchar()代码#include<stdio.h>#include<stdlib.h>int main(){ FIL

2021-03-26 08:14:49 138

原创 嵌入式笔记10 expr、循环语句(while until)

学习目标:expr命令while循环语句until循环语句break、continue和here函数source学习内容:expr命令格式:expr expression(命令读入expression参数,计算它的值,然后将结果写入标准输出)参数应用规则:1、 用空格隔开每个项2、 用\(反斜杠)放在shell特定的字符前面对包含空格和其他特殊字符的字符串要用引号括起来3、 计算字符长度4、 增量计数说明:expr在循环中用于增量计算。先将变量初始化为0,然后循环值加1,反

2021-03-23 09:52:54 216

原创 嵌入式笔记9

变量表达式test是shell程序中的一个表达式,通常用在流程控制for、while、if等结构中,用test命令去判断文件的存在与性质,变量的相互关系语法:test<表达式>如果<表达式>成立,test返回0,反之返回一个非0值字符串比较两个数值的比较逻辑操作,可以进行and/or,与其他条件联合使用文件操作,例如文件是否存在文件的状态等字符串比较test –z<字符串>比较字符串的长度是否为0,如果等于0则返回0,不是则返回1$?:存储shel

2021-03-22 10:35:49 79

原创 嵌入式笔记8 显示本地变量 特殊变量 shift命令 特殊符号

显示本地变量echo 变量名或echo变量名或echo变量名或echo(变量名) eg #num=2 #echo “this is $numnd” #num=2#echo “this is ${num}nd”eg2 要将name的内容多出“Yes”,两种方法 : #name= “KaTeX parse error: Expected 'EOF', got '#' at position 13: name”yes #̲name= “{name}”yesEg3 在子shell

2021-03-19 11:19:21 174

原创 嵌入式笔记7

**嵌入式开发工具命令解释器-shell**1、标准输入的文件描述符号0,标准输出的文件描述符号1,标准错误输出的文件描述符号22、>:重定向echo hello > test.txt 这样控制台就不会输出hello了,而是把输出重定向到test.txt文件中了echo hello >> test.txt >> 是在文件后面追加 > 是覆盖3、Shell就是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序界面系统级程序

2021-03-19 10:58:18 89

原创 嵌入式笔记6

1、嵌入式Linux开发工具-编译器 gcc (静态库 动态库的制作)可以制作库 库的使用2、嵌入式Linux开发工具-调试器 gdb (调试方法)目标:可以调试简单的错误以及内存错误3、嵌入式Linux开发工具-工程管理器make 目标企业级的makefile、cmake(管理交叉编译器)4、嵌入式Linux开发工具-git版本管理器5、嵌入式Linux开发工具-shell编程...

2021-03-19 10:27:38 50

原创 嵌入式笔记5

企业级makefile知识点条件编译#是注释查找目录(cd /mnt之后就一直Tab键)解压文件企业级Makefile编写:1、 总控makefile:进入各个功能子目录执行make命令,并将所有.o文件生成可执行文件...

2021-03-19 10:26:18 48

原创 嵌入式笔记4

嵌入式Linux开发工具-调试器gdb介绍嵌入式Linux开发工具-调试器gdb1、gdb也是GNU计划(a\启动运行程序 b\设置断点 c\查看变量值)2、使用gdb之前:需要-g编译选项(回车加run再加list回车回车)(d+断行数消除断点)3、学习gdb命令:gdb 可执行文件 –tui()4、运行命令:run(r) continue©5、设置断点;break+行号break+函数名 break+行号+条件6、查看断点信息:info break7、删除断点:delete+断点号

2021-03-18 09:53:57 66

原创 嵌入式笔记3

动态库 静态库链接gcc –Wall demo.c显示所有警告(包括隐藏的)库文件:存放函数和变量的仓库 特点:只能使用库里的函数和变量,不能看到其实现静态库以.a结尾:当使用静态库时,库里的函数和变量是在编译时加载到可执行文件动态库以.so结尾:当使用动态库时,库里的函数和变量是在运行时加载到可执行文件可执行文件的大小:静态库>动态库 >内存的使用效率可执行文件的速度:静态库>动态库 >运行效率可执行文件的功能升级:静态库<动态库 >

2021-03-18 08:52:58 45

原创 嵌入式笔记2

编译文件vim 文件名快捷键先按ESC再按:在输入g!强制退出:q!命令模式:vim 文件名打开时默认模式(:进入底行模式)底行模式:插入模式:命令模式按i或a(ESC退出)(:进入底行模式)(ESC进入命令模式)插入模式 输入文字在按ESC按键进入命令模式,再点yy再点pdd删除 U恢复复制10行先点10在yy再按p(删除10行先点10,再按dd)底行模式:s/hello/hi(替换hello): s/hello/hi/g全部替换:wq!(保存退出)gcc 内嵌编译器gbd

2021-03-17 16:24:37 54

原创 嵌入式笔记1

-普通文件d 目录文件c/b 设备文件l 链接文件p 管道文件f 堆栈文件s 共享文件r可读 4 w可写2 x可执行1-a所有文件包括隐藏文件root@jsetc-virtual-machine:/# touch创建文件root@jsetc-virtual-machine:/# mkdir创建文件夹mkdir –p m/n/groot@jsetc-virtual-machine:/# rm删除文件root@jsetc-virtual-machine:/# r

2021-03-17 15:59:23 55

空空如也

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

TA关注的人

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