嵌入式学习(第一周)

目录

一、Linux操作指令

1、Linux常用命令

2、gcc编译流程 

3、进制转换与(原码、反码、补码)

二、C语言基础

1、C语言标识符与数据类型

1.1 标识符与关键字

1.2 变量和常量

1.3 C语言数据类型

一、Linux操作指令

1、Linux常用命令

用户切换

普通用户----超级用户 sudo su

超级用户---普通用户 exit

su + username

临时获取超级用户权限

sudo + 命令

sudo apt install 软件名

ls 查看当前目录下有哪些文件或者文件夹

ls -a:显示所有文件包含隐藏文件(以.开头的文件就是隐藏文件)

ls -r:逆向显示文件

ls -R:递归地列举所有目录(在当前目录下)的所有内容

ls -l:详细显示文件属性

pwd:查看当前目录的完整路径

创建目录/文件

创建一个空目录 --- mkdir test1

先创建子目录1再在子目录1下创建子目录2 --- mkdir -p test1/test2

touch:创建文件

touch day2.txt

touch main.c main.cpp main.java main.py main.js

如果文件不存在,创建文件,如果文件存在,则修改该文件的时间戳为当前时间

touch -t 时间 文件名:修改文件的时间戳为指定时间。

删除目录/文件

rmdir: 删除空文件夹/目录

(注意: rmdir只能删除空文件夹/目录) ------ rmdir test1

rm:删除文件或非空文件夹/目录

rm + 文件名

rm -r + 文件夹/目录名 或者 rm -rf +文件夹/ 目录名

移动文件

mv day2 day3 --- 将day2文件夹移动到day3文件夹

mv day2.txt day3 --- 将day2.txt移动到day3文件夹

重命名文件

mv day2.txt day3.txt ---- 把day2.txt改为day3.txt

mv day2 day3 ---- 把day2文件夹名改为day3

cp: 拷贝文件

  1. 拷贝文件

cp test1.c day2 --- 把test1.c拷贝到day2中

  1. 拷贝文件夹

cp -r dir1 dir2 --- 把文件夹dir1拷贝到dir2中

man:查看帮助文档

cat:查看文件内容----cat test.c

查看ip地址

windows:打开终端 输入 ipconfig

Linux:打开终端,在终端中输入 ifconfig

vi/vim复制剪切粘贴操作

[1] 按行复制/剪切命令----yy/dd,表示按行复制/剪切;

[2] 对光标位置到该行的结尾进行复制/剪切

命令y$/d$,表示从当前光标复制/剪切到当前光标结尾

[3] 多行复制命令----nyy/ndd

[4] 粘贴操作----命令p/P。

[5] 错误撤销恢复----命令u表示撤销,如果想取消撤销,可以按ctrl+r恢复

底行模式

[1] 保存操作:

:w 直接保存到原始文件中

:wq 表示写入退出命令

:q! 表示不保存退出命令

[2] 查找操作

1> / <需要查找的字符> 向下查找

2> ?<需要查找的字符> 向上查找

注意:如果文本中含有多个匹配字符,则可以按n来自动查找下一个匹配的字符,按N键就可以查找上一个匹配的字符。这样就能对查找到的内容进行上下移动。

2、gcc编译流程 

1> 预处理阶段

去掉注释,加载头文件,代替宏定义。

生成产物:预处理文件(以.i结尾)

实例:gcc -E hello.c -o hello.i

2> 编译

编译阶段的主要工作是把我们的源代码生成相应的汇编代码的过程。如果有语法错误,报错,并结束编译过程。

生成产物:汇编文件(以.s结尾)。

实例:gcc -S hello.i -o hello.s

3> 汇编

首先我们应该知道汇编代码(汇编指令)并不是机器能够执行的语言,我们还必须把汇编语言翻译计算机能识别的机器语言。所以在这个阶段把汇编源文件通过汇编器生成目标文件(二进制机器语言)。

实例:gcc -c hello.s -o hello.o

4> 链接

把目标文件执行所依赖的所有二进制的其他目标文件及C的库文件都整合成一个可执行文件的过程

生成产物:可执行程序。

实例:gcc hello.o -o hello

3、进制转换与(原码、反码、补码)

逢2进1

二进制:逢2进1

例如,数字 0、 1、 10、 111、 100、 1000001 都是有效的二进制。

八进制:逢8进1

例如,数字 0、 1、 5、 7、 14、733、 67001、 25430 都是有效的八进制。

十六进制:逢 16 进 1

十六进制中,用 A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15。

例如,数字 0、1、6、9、A、D、F、419、EA32、80A3、BC00 都是有效的十六进制。

将二进制转换成十进制

将八进制转换成十进制

 

将十六进制转换成十进制

 

二进制整数和八进制整数之间的转换

 

二进制整数和十六进制整数之间的转换

[1] 原码

正数用0表示,负数用1表示。数的范围为-127~+127。

[2] 反码

正数用0表示,负数用1表示。

正数:反码与原码相同。

负数:反码可在原码的基础之上,符号位不变,其余位取反。

[3] 补码

正数用0表示,负数用1表示,正数的补码与原码相同,而负数的补码可在原码的基础之上,符号位不变,其余位取反,末位加1。

二、C语言基础

1、C语言标识符与数据类型

1.1 标识符与关键字

标识符

标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。

关键字

[1] 基本数据类型关键字

void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。(C89标准新增) 
    
char:字符型类型数据,属于整型数据的一种。(K&R时期引入) 
    
int:整型数据,表示范围通常为编译器指定的内存字节长。(K&R时期引入) 
    
float:单精度浮点型数据,属于浮点数据的一种。(K&R时期引入) 
    
double:双精度浮点型数据,属于浮点数据的一种。(K&R时期引入) 
    
//_Bool:布尔型(C99标准新增) 
    
//_Complex:复数的基本类型(C99标准新增) 
    
//_Imaginary:虚数,与复数基本类型相似,没有实部的纯虚数(C99标准新增) 
    
//_Generic:提供重载的接口入口(C11标准新增)

[2] 类型修饰关键字

short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入) 
    
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入) 
    
// long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增) 
    
signed:修饰整型数据,有符号数据类型。(C89标准新增) 
    
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入) 
    
// restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新 增

[3] 复杂类型关键字

struct:结构体声明。(K&R时期引入) union:联合体声明。(K&R时期引入) enum:枚举声明。(C89标准新增) typedef:声明类型别名。(K&R时期引入) sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入) // inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)

[4] 存储级别关键字

auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配。与static相反。当变量未指定时默认 为auto。(K&R时期引入) static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。(K&R时期引入) register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器 通过寄存器而不是堆栈传递参数。(K&R时期引入) extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数 时在其他模块中寻找其定义。(K&R时期引入) const:指定变量不可被当前线程改变(但有可能被系统或其他线程改变)。(C89标准新增) volatile:指定变量的值有可能会被系统或其他线程改变,强制编译器每次从内存中取得该变量的值,阻止 编译器把该变量优化成寄存器变量。(C89标准新增)

[5] 流程控制关键字

1*)跳转结构

return:用在函数体中,返回特定值(如果是void类型,则不返回函数值)。(K&R时期引入) continue:结束当前循环,开始下一轮循环。(K&R时期引入) break:跳出当前循环或switch结构。(K&R时期引入) goto:无条件跳转语句。(K&R时期引入)

2*)分支结构

if:条件语句,后面不需要放分号。(K&R时期引入) else:条件语句否定分支(必须与if连用)。(K&R时期引入) switch:开关语句(多重分支语句)。(K&R时期引入) case:开关语句中的分支标记,与switch连用。(K&R时期引入) default:开关语句中的“其他”分支,可选。(K&R时期引入)

1.2 变量和常量

1.2.1 变量

所谓变量是指在程序运行过程中其值可以改变的量。使用变量时必须“先定义,后使用”。

练习:交换杯子里的液体

1.2.2 常量

[1]常量的定义

在程序执行过程中,其值不被改变的量。

常量主要分为两类:

1**)直接常量:直接引用的数字等;

字符常量‘A’ , ‘a’

整型常量10 100 0b1101 0664 0xaf

实型常量3.14 5.69

字符串常量 "hello world""100"

2**)符号常量:使用标识符来代替一个数字(常见的:宏定义常量 和 常变量)

[2]宏定义

#define 也是C语言预处理命令的一种,被称为宏定义指令

1*)类对象宏(object-like macro不带参宏) #define 宏名 宏值 例如:

#define MAX 10 
#define PI 3.1415926

2*)类函数宏(带参数宏) #define 宏名(参数列表) 宏值 例如:

#define S(r) PI*r*r 

使用宏定义的优点:

  1. 给数值赋予一定含义,增强代码可读性

  2. 减少代码编写量

  3. 可以"一改全改"

练习:租船问题。 写程序计算游客需要付的租船的费用。租船每小时30元,押金100元。游客输入租船时间,计算出 租船费用。租船费用=时间*每小时钱数+押金。要求押金与每小时钱数使用宏定义。

[3]常变量

变量值不可改变的量,使用const修饰

const int a = 10; // 定义一个常变量 
a = 9; // 报错,a为const修饰不可改变。

注意:

const修饰后的变量会变成只读,因此无法再次赋值。

常变量与宏定义常量的区别:

宏定义常量是在预处理阶段,使用宏名来代替宏值。而常变量是在程序运行时,程序在内存分配的 一个变量,只不过变量不允许再次赋值。

1.3 C语言数据类型

 

1.3.1 整型

[1]C语言中的整数类型

整型类型包括短整型(short int)、基本整型(int)、长整型(long int),它们又被分为有符号(signed)和 无符号(unsigned)两种。

[2]sizeof运算符

获取某个数据类型或变量的长度可以使用 sizeof 操作符,以字节为单位来计数。

 

[3] 整数的显示/打印方法

1*)显示十进制整数

%hd、 %d、 %ld 以十进制、有符号的形式输出 short、 int、 long 类型的整数 
%hu、 %u、 %lu 以十进制、无符号的形式输出 short、 int、 long 类型的整数

2*)显示八进制整数

%ho、 %o、 %lo 以八进制、不带前缀、无符号的形式输出 short、 int、 long 类型的整数 
%#ho、 %#o、 %#lo 以八进制、带前缀、无符号的形式输出 short、 int、 long 类型的整

3*)显示十六进制整数

%hx、 %x、 %lx 以十六进制、不带前缀、无符号的形式输出 short、 int、 long 类型的整数 
%#hx、 %#x、 %#lx 以十六进制、带前缀、无符号的形式输出 short、 int、 long 类型的整

ps:如果 x 小写,那么输出的十六进制数字和前缀都小写;如果 X 大写,那么输出的十六进制数字和前缀都大写。

1.3.2 实型(浮点型) 

[1]浮点数的表示形式

1*)小数形式 由数码0~ 9和小数点组成。例如 0.0、 75.0、 4.023、 0.27、 -937.198 等都是合法的小数

2)指数形式  例如 7.25×(10^2)、 0.0368×(10^5)、 100.22×(10^-2)、 -27.36×(10^-3) 等。

C 语言中小数的指数形式为:

2.1E5 = 2.1×(10^5),其中 2.1 是尾数, 5 是指数。 
3.7E-2 = 3.7×(10^-2)其中 3.7 是尾数, -2 是指数。 
0.5E7 = 0.5×(10^7),其中 0.5 是尾数, 7 是指数。

[2] 浮点数的输出格式

%f:输出十进制计数法的float和double数字; 
%e:输出指数计数法的float和double数字;
%lf、%le:输出double类型的数字; 
%Lf、%Le:输出long double类型的数字;

1.3.3 字符型(char)

[1]ASCII码表

 

[2]字符常量

字符常量是用单引号括起来的一个字符;注意只能是英文的单引号,如’a’、’D’、’+’、’?’等都是字符 常量。

注意:字符常量只能是单字符,不能是字符串,不能用双引号。

[3] 字符变量

字符变量使用类型字符char定义的变量。char是英文character(字符)的缩写。字符变量一般占用一个字节(8bit)。它常用来存储字符,当它用于存储字符常量时,实际上是将该字符的ASCII码值存储到内存单元。

例如:char c = ‘?’定义一个字符变量c并使初值为字符’?’。’?’的ASCII代码是63,系统把整数63赋给变量c

练习

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值