自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式培训-数据结构-day2&3-线性表

插入前: (a0,a1,---,ai-1,ai,ai+1-------,an-1) 0≤i≤n,i=n时,x插入表尾。设Loc(ai)为ai的地址,Loc(a0)=b,每个元素占d个单元 则:Loc(ai)=b+i*d ……删除前: (a0,a1,---,ai-1,ai,ai+1-------,an-1)。插入后: (a0,a1,---,ai-1, x, ai,ai+1-------,an-1)设计清除线性表L=(a0,a1,---,ai,-------,an-1)中重复元素的算法。

2023-12-14 17:45:18 1021

原创 嵌入式培训-数据结构-day1-引入

表示数据运算之间的抽象关系 按每个元素可能具有的直接前趋数和直接后继数将逻辑结构分为“线性结构”和“非线性结构”两大类。1.数据(Data) 数据即信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号总称。散列存储:根据数据元素的特殊字段(称为关键字key),计算数据元素的存放地址,然后数据元素按地址存放。存储结构是通过计算机语言所编制的程序来实现的,因而是依赖于具体的计算机语言的。索引存储:存储数据的同时,建立一个附加的索引表,即索引存储结构=数据文件+索引表。心态不能怕难,多练习多写。

2023-12-14 12:22:35 423

原创 嵌入式培训-Linux系统及C编程高级-DAY19~21-make file

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE(集成环境)都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。“自动化编译”:一旦写好(指的是makefile 文件),只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率 (makefile文件的m可以大写也可以小写,但程序优先访问小写的)$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。

2023-12-12 23:54:20 837

原创 嵌入式培训-Linux系统及C编程高级-DAY17&18-编译器

O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序(按着自己的想法运行)。-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。例:gcc -S hello.i -o hello.s(-S 后面跟的文件可以是.i的也可以是.c的)

2023-12-12 20:23:25 909

原创 嵌入式培训-Linux系统及C编程高级-DAY15~16-内存管理

是指程序在申请内存时,没有足够的内存空间供其使用。通俗理解就是内存不够用了,通常在运行大型应用或游戏时,应用或游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。一次内存泄露危害可以忽略,但若一直泄漏,无论有多少内存,迟早都会被占用光,最终导致程序crash。上面这四个区属于用户空间,都分布在0~3G空间内,3G~4G空间内还有一个内核区。代码区: 存放函数体的二进制代码,由操作系统进行管理(cpu执行的机器指令,共享只读)不同区域存放的数据,赋予不同的生命周期,带来了更大的灵活编程。

2023-12-11 17:22:28 417

原创 嵌入式培训-Linux系统及C编程高级-DAY14-C共用体和枚举

用共用体的话,只占用最长的那个数据结构所占用的空间,就足够了!的大小是8,要大于7字节的char c[7],还要是int 4字节的整数倍。C语言中构造类型之一 在开发中,有些变量只有几种可能的取值,比如:一周有七天、一年有四季、在枚举的定义中,会将变量一一列出来。在C语言中,不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。通信时: 如果不确定发送的包的格式,可以定义几种格式的包,收到包之后就可以直接根据包的格式取出数据。有特定值的成员后面,从特定值开始依次+1。

2023-12-11 10:38:07 353

原创 嵌入式培训-Linux系统及C编程高级-DAY11-DAY13-C结构体

正式: 结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” ,其描述了一块内存区间的大小及解释意义。struct 结构体名 数组名[元素个数] = {{},{},……struct 结构体名 变量名 = {成员1值,成员2值..}通俗: 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。定义时,struct类型不能丢,带着才是结构体。利用操作符->可以通过结构体指针访问结构体属性。结构体中的数组,不能定义后再赋值。通过指针访问结构体中的成员。

2023-12-10 20:49:21 394

原创 嵌入式培训-Linux系统及C编程高级-DAY10-NFS服务器

nfs(Network File System)即网络文件系统,其基于UDP/IP 使用nfs能够在不同计算机之间通过网络进行文件共享,能使使用 者访问网络上其它计算机中的文件就像在访问自己的计算机一样。sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;容易扩充新的资源或软件,不需要改变现有的工作环境;/nfs/rootfs:共享的目录;NFS服务器的适用场景。

2023-12-08 21:12:22 413

原创 嵌入式培训-Linux系统及C编程高级-DAY9-TFTP服务器

TFTP(Trivial File Transfer Protocol)即简单文件传输协议 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件 传输的协议,提供不复杂、开销不大的文件传输服务。TFTP_DIRECTORY="/tftpboot" //我们设定的TFTP根目录;TFTP_OPTIONS="-c -l -s" //TFTP启动参数。-c:可创建新文件。-s:改变TFTP启动的根目录。tftp没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

2023-12-08 17:59:50 396

原创 嵌入式培训-Linux系统及C编程高级-DAY8-Shell函数

return value表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;shell函数里的变量默认是全局变量,如果想只在函数里发挥作用,需要前面加local转换成局部变量;可以显示最后的命令的执行结果,在这里可以获取函数的返回的状态。statements是函数要执行的代码,也就是一组语句;命令置换是把函数的所有标准输出都传递给了主程序的变量。全局作用域:在脚本的其他任何地方都能够访问该变量。局部作用域:只能在声明变量的作用域内访问。方式1:(命令置换)

2023-12-08 12:03:31 334

原创 嵌入式培训-Linux系统及C编程高级-DAY7-Shell分支、循环

变量依次取单词表中的各个单词, 每取一次单词, 就执行一次循环体中的命令. 循环次数由单词表中的单词数确定. 命令表中的命令可以是一条, 也可以是由分号或换行符分开的多条。while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。读别人的代码,如果有不认识的命令表达式,先找手册看命令的基本意思,对照说明预测表达式的含义和输出。test命令测试的条件成立时, 命令返回值为真(0),否则返回值为假(非0).

2023-12-07 11:37:01 894 1

原创 嵌入式培训-Linux系统及C编程高级-DAY6-linux shell脚本编程

以#号开始到该行结束,不被解释执行 注释行可以出现在程序中的任何位置,既可以单独占用一行, 也可以接在执行语句的后面. 以#号开始到所在行的行尾部分,都不被解释执行. 例如:。echo ${a[@]:起始元素id:元素个数]} :显示数组中以起始元素为首的指定个数的元素(注意:这里起始元素id不能为负值。算术运算命令expr主要用于进行简单的整数运算,包括加(+)、减(-)、乘(\*)、整除(/)和求模(%)等操作。变量名:使用固定的名称,一部分变量由系统预设,另一部分变量由用户定义。

2023-12-06 22:09:10 1008 1

原创 嵌入式培训-Linux系统及C编程高级-DAY5

进程是一个实体(每个进程都有自己的实体空间, ./a.out 运行了这个进程之后,就会给进程分配一个空间,空间从0到4G,其中从0到3G是用户段包括代码、数据等,3G到4G是内核空间)。进程是一个“执行中的程序”。程序是一个没有生命的实体(进程是有生命的实体),只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。kill 命令向指定的进程发出一个信号signal,在默认 情况下,kill 命令向指定进程发出信号15,正常情 下,将杀死那些不捕捉或不忽略这个信号的进程。

2023-12-06 14:58:12 907 1

原创 嵌入式培训-Linux系统及C编程高级-DAY4

and:逻辑与,在命令中用 -a 表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足 find . -name 'tmp' -type c -user 'inin' or:逻辑或,在命令中用 -o 表示。假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的inode已经改变。若需要网络传输文件时,就希望将其压缩成较小的文件,以节省在网络传输的时间。{}表示命令的参数即为所找到的文件;归档文件仍是没有经过压缩的,它所使用的磁盘空间仍等于其所有文件的总和。

2023-12-06 12:31:26 892 1

原创 嵌入式培训-Linux系统及C编程高级-DAY3

-l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root。管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。用户,又称使用者,是指使用电脑或网络服务的人,通常拥有一个用户账号,并以用户名识别。

2023-12-04 23:53:08 844

原创 嵌入式培训-Linux系统及C编程高级-DAY2

Debian Linux首先提出“软件包”的管理机制---Deb软件包 将应用程序的二进制文件、配置文件、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。Redhat Linux基于这个理念推出了自己的软件包管理机制---Rpm软件包 随着Linux操作系统规模不断扩大,系统中软件包间复杂的依赖关系,导致Linux用户麻烦不断 Debian Linux开发出了APT软件包管理器。

2023-12-04 14:29:56 353

原创 嵌入式培训-Linux系统及C编程高级-DAY1

只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之间自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化。Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux是操作系统内核。

2023-12-04 11:38:32 363

原创 华清远见嵌入式培训-C语言进阶-DAY12

指针函数的返回值只能是:1.全局变量的地址 2.字符串常量的地址 3.static变量的地址 4.没有被释放的malloc动态分配的地址。先声明后详细的可读性更高。数组作为实参,形参可以是<同数据类型>变量名称[ ],或者<同数据类型> *p。(实参1->形参1,实参2->形参2,。<数据类型>(*<函数指针名称>)(<参数声明列表>);(函数体之外声明的变量,程序里的函数都看得见的)用来存放函数的地址,这个地址是一个函数的入口。实参是变量的地址,形参是同类型的指针。指一个函数的返回值为地址的函数。

2023-12-01 23:13:49 388 1

原创 华清远见嵌入式培训-C语言进阶-DAY10

指针变量+1,是向地址大的方向移动一个目标数据。多级指针运算也是以目标变量为单位进行便宜、比如 int **p;p+1是移动一个int *变量所占的内存空间。int ***p,p+1是移动一个int **占的空间。void指针取指向的值,必须加强制转换,不然编译器不知道void类型要取几字节的内容、是一种不确定类型的指针变量,可以通过强制类型转换指向任何类型的数据变量。const放星号后边,地址不能改,但可以通过指针改变量的值。const在前边是限制通过指针改目标的值,改地址可以。void *<变量名称>

2023-12-01 09:12:08 365 1

原创 华清远见嵌入式培训-C语言进阶-DAY7

如果指针px指向数组x首元素,则x[i]、*(px+i)、*(x+i)、px[i]具有相同功能:访问数组第i+1个数组元素。sizeof(指针变量)求的是指针变量占的内存空间,与电脑环境有关,32位占4字节,64位占8字节。对于二维数组a[n][m]如果要指针指向第一个元素,要p = a[0],不要p = a。*(a+1)等价于 a[1]。a[1][1] 数组等价于 行指针 *(*(a+1)+1)int (*p)[3]数组a的首地址a是常量,不能a++或a--做运算。p[i] 等价于 *(p+i)

2023-11-29 14:22:50 411 1

原创 华清远见嵌入式培训-C语言进阶-DAY5

指针说明时指定的数据类型不是指针变量本身的数据类型,而是指针目标的额数据类型,指针指向什么类型的数据就是什么类型的指针。内存单元的地址称为指针。一般情况下,地址、指针、指针变量统称指针。向指针赋值时,值必须是地址常量或指针变量,不能是普通的整数(除了0以外)。计算机内存中,以字节为单位,每个字节单元都有一个编号,这个编号称为地址。如果指向的是一个变量的内存空间,则变量称为指针的目标变量,简称指针的目标。指针的存储类型是指针变量本身的存储类型。指针指向的内存中存放的数据叫指针的目标。指针本身也有自己的地址。

2023-11-28 09:24:25 352

原创 华清远见嵌入式培训-C语言进阶-DAY3

strlen()字符串长度,从第一个字符开始,到第一个\0结束。如果字符串里有多个\0则返回值不正确。用字符串函数,一定要注意\0的位置,并且注意字符串或数组的大小。基本都在string.h中。strcpy字符串拷贝。strcat字符串连接。strcmp字符串比较。

2023-11-27 09:03:36 331

原创 华清远见嵌入式培训-C语言进阶-DAY2

sizeof(数组名[0])求得一维数组总长,再除以sizeof(单个元素)。求二维数组的行数和列数:sizeof(数组名)求得数组总长,再除以sizeof(单个元素)。strlen()函数,返回字符串长度,在string.h里。如果printf用%s打印字符串,则会打印字符直到遇到\0结束。

2023-11-25 23:59:44 317

原创 华清远见嵌入式培训-C语言进阶-DAY1

a[0][0]-a[0][1]-a[0][2]-a[1][0]-a[1][1].....数组元素存放顺序,先排行序 int a[3][2]。行号可以省略,但列号一定要有。

2023-11-25 19:04:56 326

原创 华清远见嵌入式培训-C语言-DAY15

初始化方式:在定义数组时,为数组元素赋初值 int a[5]={1,2,3,4,5};数组 构造数据类型之一 数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素 数组中各元素的数据类型要求相同,用数组名和下标确定。数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式:数组名[下标] 其中:下标可以是常量或整型表达式。

2023-11-25 15:22:44 357

原创 华清远见嵌入式培训-C语言-DAY12

求解表达式2,若为真则执行代码,然后执行表达式3.若为假,执行循环体后面的。然后执行完表达式3,再执行表达式2。为了防止成死循环,可以把goto loop;循环:goto、while、do while、for。循环变量记得初始化,终止条件具备,循环条件变量的变化。pow(n,3)求n的几次方函数,在math.h里。一般不用goto,但个别场合goto的可读性更好。先执行一次do里的内容,再判断while。循环部分后加 goto loop;表达式可省略,但可能会死循环。写代码,多敲多练多模仿。

2023-11-24 12:18:46 359

原创 华清远见嵌入式培训-C语言-DAY4

gcc -E boll.c -i bool.i 预处理命令,生成.i的预处理文件。标准类型的bool写作_Bool,如需写作bool需加入<stbool.h>头文件。char 1字节 -128~127或0~255(使用/j编译选项)gedit note.txt 创建名为note的txt文件。long类型 32位机占4字节,64位机占8字节。<limit.h>头文件中可以看到各类型的取值范围。signed char 1字节 -128~127。非0的值编译后会转换为1。c.字符型 char。

2023-11-19 09:10:42 23

原创 华清远见嵌入式培训-C语言-DAY2&DAY3

w [file name] 另存为file name的文件(编程中要多用另存为来备份不同时期不同版本的代码):r [file name] 读入file name的文件内容,并将文件内容插入光标处。:范围 s/old/new/ 将范围内的第一个old内容替换为new内容。:范围 s/old/new/g 将范围内的全部old内容替换为new内容。在命令行模式下按a、A、i、I、o、O可进入插入模式进行编程;:q 退出没有修改的文件,若文件修改且未保存,则命令无效。:wq 保存文件并退出(命令可叠加)

2023-11-18 10:09:50 30 1

原创 华清远见嵌入式培训-C语言-DAY1

cp [option] 文件名 目标路径 向目标路径下复制文件,复制文件夹要加上-r的选项。linux是开源的,可根据需要进行裁剪,所以不同linux版本的目录结构不一样。mv [option] 文件名1 文件名2 目标路径 向目标路径下移动多个文件。linux里的文件权限一般包含9位:拥有者、创建者、同组用户、其他用户。head -n 文件名 打印文件的前n行内容,默认10行。tail -n 文件名 打印文件的后n行内容,默认10行。/boot 存放的是系统启动用的程序。

2023-11-17 09:46:02 68 1

空空如也

空空如也

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

TA关注的人

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