华清远见嵌入式基础学习汇总

本人是一名即将大四的在校大学生,由于深感自己的能力不足,所以在假期期间报名了华清远见的嵌入式培训课程,到现在为止,从我开始学习已经过去了半个多月了,现在我就来总结一下我的学习经历和学习成果吧。

再来华清远见之前之前,由于我的专业缘故也简单的学习过嵌入式系统,但也仅限于了解,就连嵌入式最基础的C语言,最简单的程序也不一定能完整地写出来。经过在华清远见这半个多月的学习,我已经基本掌握了c语言的基础知识内容。

首先是虚拟机和linux操作系统。

 

这套系统是我们学习嵌入式非常关键的东西,它可以虚构出一套类似于常规电脑最基础运行环境的模拟环境,我们就可以通过它来模拟出我们的程序在该环境下的运行状况。之后,我们正式开始C语言基础的学习。

一、32个基础的关键字:

数据类型:char、short、int、long、float、double、struct、union、enum、void

控制语句:if、else、while、do、switch、case、default、break、continue、for、goto

存储类型:auto、static、extern、register

const:只读

return:返回函数

Signed:有符号数

Unsigned:无符号数

Sizeof:计算所占内存空间的大小:单位:字节  sizeof(数据类型) //  sizeof(变量名)

typedef:给已有的数据类型起别名

Volatile:防止编译器优化

这些关键字是我们在c语言编程中最常用的代码。

二、最基础的数据类型:

字符型:Char:(1字节 == 8bit)

整型:Int (4字节 == 32bit)

浮点型:float(单精度浮点数):%f-------默认小数点后6位

4字节,保证6~7位的有效数据;

Double(双精度浮点数):%lf------默认小数点后6位

8字节,有效数字的位数一般位:15~16位

类型转换

强制类型转换:方法:(强制转换的类型)变量

隐式类型转换

 

横向箭头:不管有没有进行混合运算,都会进行转化

char、short当作int类型去用,float类型当做double去用

纵向箭头:只有进行混合运算,才会进行转换

三、运算符

算术运算符:+  -  *  /  ++  --  %

关系运算符:>  <  ==  !=  >=    <=

关系运算符是用来判断两者之间的关系的---------关系成立:1   不成立:0

逻辑运算符:&&  ||   !

&&:

表达式1  && 表达式2

&&截断法则:有一个为假,结果就为假。前一个为假,后面就不在进行运算了

||:

表达式1||表达式2

||截断法则:有一个为真,结果就为真,前一个为真,后面就不在进行运算了

Sizeof运算符:Sizeof(数据类型)  sizeof(变量名)

三目运算符:表达式1 ? 表达式2 :表达式3

先判断表达式1是否为真,如果为真,就将表达式2的值作为整个表达式的值,否则,将表达式3的值作为整个表达式的值

逗号运算符:从左至右依次计算,将最后一个表达式的值作为整个表达式的值

位移运算符:<< , >>

左移:

无符号数:高位丢弃,低位补0

有符号数:符号位不变,高位丢弃,低位补0

右移:

无符号数:低位丢弃,高位补0

有符号数:符号位不变,低位丢弃,高位补符号位

  • 顺序结构

语句按照一定的先后顺序去执行

五、选择结构

单分支选择结构

If(表达式)

{

   语句;

}

先判断表达式是否成立,如果成立,执行语句;

双分支if语句

if(表达式)

{

   语句1;

}

else

{

   语句2;

}

多分支if语句结构

If(表达式1)

{

  语句1;

}

else if(表达式2)

{

   语句2;

}

。。。。

else if(表达式n-1)

{

  语句n-1

}

Else

{

  语句n;

}

switch语句

switch(表达式)

{

case 标号1:

            语句1;

case 标号2:

            语句2;

。。。。。

case 标号n:

            语句n;

default:

语句n+1;

}

六、循环结构

for循环

for(表达式1;表达式2;表达式3)

{

     循环体;  

}

表达式1:循环的起始条件

表达式2:循环的终止条件

表达式3:循环变量的变化

 

while语句

While(表达式)

{

循环体;

}

do...while语句

do

{

循环体;

}while(表达式);

死循环

1、

while(1)

{

循环体;

}

2、

For(  ;  1  ; )

{

   循环体;

}

goto语句

无条件跳转语句

goto 标号;

标号:

 

  • 数组

一组数据类型相同的元素的集合

存储类型 数据类型 数组名[元素个数];

存储类型:auto,static,extern,register

数据类型:数组中每一个元素的数据类型

数组的数据类型:数据类型 [元素个数]

变量的数据类型:去掉变量名剩下的就是变量的数据类型

数组所占内存空间=sizeof(数据类型)*元素个数

 

 

  • 冒泡排序

思想:从左到右,俩俩依次比较,如果前一个比后一个大,交换位置,否则不变

 

  • 字符数组

字符数组的本质:其实就是字符串,以’\0’作为结束符

存储类型 数据类型 数组名[元素个数];

字符数组的输出函数

puts(数组名);

功能:将数组的内容输出打印到终端,并且自动添加换行

注意:遇到’\0’结束

字符串的输入函数

gets(数组名);

功能:将键盘接收到的字符串存放到数组中,并且再末尾自动添加’\0’

Scanf和gets的区别

gets以回车作为结束符,但是scanf以回车,tab,空格作为结束符

缓存区:

gets:当完成字符串的输入后,会自动清空缓冲区的内容

Scanf:当完成字符串的输入后,缓冲区会遗留空格,回车,tab

注意:

gets首先会检测缓冲区是否有内容,如果有直接拿来使用,否则输入

Scanf是标准的输入函数,只能通过键入方式

Printf和puts区别

Puts会自动添加换行,printf不会

十、字符串的处理函数

求字符串的长度

strlen(数组名);

功能:求字符串的长度

返回值:求得的字符串的实际长度,不包含’\0’

sizeof与strlen区别:

  1. strlen是求得的字符串的实际长度,不包含’\0’,而sizeof是求得的整个空间大小
  2. sizeof是运算符,strlen是库函数

字符串的拷贝函数

strcpy(数组1,数组2/字符串2);

功能:将数组2的内容拷贝到数组1中,包含’\0’,相当于完全拷贝

字符串的连接函数

strcat(数组1,数组2/字符串2);

功能:将数组2或者字符串2的内容连接到数组1中,数组1的’\0’会被覆盖

字符串的比较函数

strcmp(数组1/字符串1,数组2/字符串2);

功能:比较字符串1和字符串2的大小

返回值:

大于0:字符串1>字符串2

等于0:字符串1==字符串2

小于0:字符串1<字符串2

比较规则:

从左到右依次对字符串的ASCII码进行比较,直到遇到不同的,或者遇到’\0’结束

十一、二维数组

本质:表示元素为一维数组的数组(数组的数组)

存储类型 数据类型 数组名[行数][列数];

行数:有几个一维数组

列数:一维数组中有几个元素

 

  • 函数

函数的分类

库函数

printf,sancf,strlen

引入头文件

#include<stdio.h>

#include<string.h>

调用函数

Strlen(str);

函数名(实际参数列表);

自定义函数

存储类型 数据类型 函数名(形式参数列表);

{

函数体;

返回值;

}

存储类型:auto,static,extern,register

数据类型:返回值的数据类型

函数名:见名知意

形式参数列表:要实现的功能所需要的参数,需要调用者自己传入(1.需要几个2.每个参数的数据类型)

函数体:具体实现的功能

返回值:如果没有返回值,可以省略,不需要写return,数据类型 void,如果有,有且仅有一个

调用函数

函数名(实际参数列表);

注意:

  1. 需要将实参的值传递给形参,实参的个数和数据类型必须和形参保持一致
  2. 实参可以是变量,常量,表达式,必须是一个确定的值
  3. 实参和形参是俩快独立的内存空间
  4. 传参实际上是将实参的值拷贝给了形参
  5. 形参是局部变量,在函数调用的时候被定义,函数调用结束,释放空间

 

十三、指针

指针是一种数据类型,是一种保存地址的数据类型。

什么是地址

内存分配的最小单位是字节,每一个字节都有一个编号,我们把这个编号叫做地址

地址的本质:内存单元的编号

指针:指针就是地址

指针的本质:内存单元的编号

指针的定义

存储类型 数据类型 *指针变量名;

int *p;

存储类型:auto,static,register,extern

数据类型:指针所指向的数据类型(去掉*和变量名,剩下的就是指针所指向的数据类型)

指针的数据类型:数据类型 *//int *

 

赋值

char *p = &a;

char *p = NULL;

p = &a;

 

地址传递

 

  • 二级指针

指针的指针

二级指针他的内存空间存放的就是一级指针的地址

定义

存储类型 数据类型 **指针变量名;

 

  1. 指针的数据类型,去掉变量名剩下的就是
  2. 指针指向的数据类型,去掉一个*和变量名剩下的就是所指向的数据类型
  3. 指针指向的数据类型,去掉一个*和变量名剩下的就是所指向的数据类型

指针的算数运算

p+n:p+n相对于p向地址增大的方向移动了n个数据

 实际的变化:p+sizeof(指向的数据类型)*n

p-n:p-n相对于p向地址减小的方向移动了n个数据

 实际的变化:p-sizeof(指向的数据类型)*n

p++:p向地址增大的方向移动了一个数据

p--:p向地址减小的方向移动了一个数据

p-q:(p和q的数据类型必须一致)这俩个指针之间相隔的个数

 实际的变化:(p-q)/sizeof(指向的数据类型)

  • 数组指针

指向数组的指针

存储类型 数据类型 (*指针变量名)[元素个数];

存储类型:auto,static,extern,register

数据类型:数组指针指向的数组中元素的数据类型

指针的数据类型:数据类型 (*)[元素个数]

元素个数:指针所指向的数组中的元素个数

数组指针和一维数组

 

数组指针和二维数组

 

  • 指针数组

元素为指针的数组

存储类型 数据类型 *数组名[元素个数];

数据类型 *:数组中元素的数据类型

指针数组与二维数组

 

### 回答1: 嵌入式Linux C语言应用程序设计是指在嵌入式设备上使用C语言编写应用程序,以实现特定功能的过程。华清远见培训PDF是一种培训资料,用于指导学习如何进行嵌入式Linux C语言应用程序设计的相关技术。 在嵌入式Linux C语言应用程序设计中,我们需要了解Linux操作系统的基本概念和原理,以及嵌入式系统的特点和应用场景。同时,我们也需要掌握C语言的基本语法和常用的编程技巧。 这门培训课程的目标是教授学员如何使用C语言开发嵌入式应用程序,并深入理解Linux系统的底层原理。培训材料以PDF形式提供,方便学员在自己的电脑上随时学习和参考。 在课程中,我们将学习如何利用Linux的系统调用和API来开发应用程序,如文件操作、进程管理、网络通信等。同时,我们也将学习如何进行硬件编程,与设备进行交互,如GPIO控制、串口通信等。 除了理论学习,这门培训将通过一些实践项目,帮助学员更好地掌握所学知识。学院将提供实验环境和开发板,供学员进行实践操作。通过这些实践项目,学员可以加深对嵌入式Linux C语言应用程序设计的理解,并提高自己的编程能力。 总而言之,嵌入式Linux C语言应用程序设计华清远见培训PDF为学员提供了学习嵌入式开发的理论知识和实践项目,帮助学员掌握如何用C语言编写嵌入式应用程序,并更好地理解Linux系统的工作原理和特点。这对于从事嵌入式开发的人员来说,是一门非常有价值的课程。 ### 回答2: 华清远见培训提供了一门关于嵌入式Linux C语言应用程序设计的PDF教程。这门教程专注于嵌入式Linux系统的C语言编程,旨在帮助学员掌握在嵌入式设备上开发应用程序的技能。 教程内容主要包括以下几个方面: 1. 嵌入式系统概述:介绍了嵌入式系统的基本概念和特点,以及嵌入式Linux系统的结构和运行环境。 2. Linux内核编程:讲解了如何进行Linux内核的配置和编译,以及如何开发内核模块和驱动程序。 3. 嵌入式应用程序开发:涵盖了Linux下的C语言开发工具链的使用,包括编译、调试和测试等方面的内容。同时,还介绍了常用的嵌入式开发库和函数,以及如何进行文件系统的管理和操作。 4. 嵌入式设备的外设驱动开发:详细讲解了如何开发各种外设的驱动程序,包括串口、SPI、I2C等接口的使用和操作。 5. 实际项目案例:通过一些实际的嵌入式项目案例,帮助学员将所学知识运用到实际的应用中。 这门教程适合已经具备一定编程基础的学员,尤其是对嵌入式系统和Linux有一定了解的人群。通过学习这门课程,学员将能够掌握嵌入式Linux系统的应用程序设计和开发技巧,提高自己在嵌入式领域的竞争力。 ### 回答3: 《嵌入式Linux C语言应用程序设计》是华清远见培训机构提供的一门培训课程,主要面向对嵌入式Linux系统开发有兴趣的学习者。 嵌入式Linux是一种嵌入式操作系统,它是将Linux操作系统适配到嵌入式设备中的一种实现方式。嵌入式系统是一种专门为具体应用设计的计算机系统,通常它具有小型化、低功耗、实时性要求等特点。而嵌入式Linux作为一种开源操作系统,具有稳定性强、适应性广等优点,因此在嵌入式设备的开发中得到了广泛应用。 C语言作为一种常用的编程语言,在嵌入式系统开发中也是广泛使用的工具。学习嵌入式Linux C语言应用程序设计》课程可以帮助学习者掌握在嵌入式Linux环境下进行C语言程序设计的技能。课程内容包括嵌入式Linux系统的搭建与配置、嵌入式设备的驱动程序编写、应用程序的开发等方面的知识。 在课程中,学习者将通过理论学习和实践操作相结合的方式,了解嵌入式Linux系统的基本原理和运行机制,并学习如何使用C语言进行嵌入式系统的开发。学习者将掌握Linux系统的搭建与配置方法,了解嵌入式设备的驱动程序开发流程,并学会使用C语言进行应用程序的编写。通过实际操作,学习者能够熟悉开发工具的使用,掌握调试技巧,提高代码质量和效率。 通过学习嵌入式Linux C语言应用程序设计》课程,学习者能够全面了解嵌入式Linux系统的开发流程和技术要点,掌握驱动程序开发和应用程序编写的基本技能,为以后从事嵌入式Linux系统开发工作打下坚实的基础
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值