嵌入式学习第一阶段--C语言基础Day01
Linux基础
linux一切皆文件
根目录 /
家目录 ~
终端
快捷键
ctrl shift + 放大终端
ctrl - 缩小终端
ctrl l 清屏
打开终端
1.点击图标
2.ctrl shift n (在当前目录下)
3.ctrl alt t (在家目录下)
关闭终端
1.点击关闭图标
2.ctrl d
3.exit
hq 用户名 whami
ubuntu 主机名 hostname
:(中间)$ 当前路径 pwd
命令
新建
文件夹 mkdir 文件夹名
文件 touch 文件名
同时新建多个:名字之间用空格隔开
文件夹 mkdir 文件夹1 文件夹2 ...
文件 touch 文件1 文件2 ...
多层嵌套:文件夹
mkdir -p 文件夹/文件夹/文件夹
查看
ls 查看当前路径下的内容
ls -a 查看当前路径下的所有内容(隐藏内容)
ls -l 查看当前路径下的所有内容的详细信息
b:块设备文件
c:字符设备文件
d:目录文件
-:普通文件
l:软链接文件
s:套接字文件
p:管道文件
文件权限
r: 读 4
w: 写 2
x: 执行 1
更改权限
chmod 777 文件名
路径切换
cd 切换路径
cd 文件夹 下一级
cd .. 上一级
cd . 当前路径
cd - 上一次
相对路径:以当前位置开始的路径
绝对路径:以家目录为开始的路径
复制
文件 cp 文件名 目标地址
文件夹 cp -r 文件夹 目标地址
重命名 cp 文件名 目标地址/新文件名
移动
移动 mv 文件or文件夹 目标地址
重命名 mv 文件or文件夹 目标地址/新文件or文件夹
删除
文件 rm 文件名
文件夹 rm -r 文件夹
-f 强制删除
vi编辑器
vi编辑器3种模式:
命令行模式:
复制 yy nyy
粘贴 p
撤销 u
反撤 chtl r
光标移动:
首行 gg
最后一行行首 G
行首 0
行尾 $
插入模式:编写代码
a i o A I O
底行模式:
保存 w
退出 q
强制 !
复制 n,my
分屏 vsp
查找 /
替换:
替换首个 s/a1/a2
行替换 s/a1/a2/g
全文替换 %s/a1/a2/g
设置行号 set nu
取消行号 set nonu
取消高亮 nohl
gcc编译器
简写
gcc file1.c 生成可执行文件a.out
./a.out
gcc file1.c -o file1 自定义可执行文件
./file1
完整编译步骤
预处理、编译、汇编、链接
预处理
展开头文件、删除注释、替换宏定义
gcc -E fiel1.c -o file1.i
编译
检查语法错误,有错报错,没错会转变成汇编语言,生成汇编文件
gcc -S fiel1.c -o file1.s
汇编
把汇编文件生成不可执行的二进制文件
gcc -c fiel1.c -o file1.o
链接
链接库文件,最终生成机器能够识别的二进制的可执行文件
gcc fiel1.o -o fiel1
计算机数据表示形式
数值型数据
非数值型数据
词法符号
关键字:32个
存储类型:auto、static、extern、register
数据类型:int、short、long、char、float、double、signed、unsigned
分支:if、else、switch、case、default
循环:for、do、while、go、to、break、continue
构造数据类型:struct、enum、union
其他:void、const、sizeof、typedef、return、volatile
标识符
定义变量名、数组名、函数名时,遵循标识符命名规则:
1.由字母、数字、下划线(_)组成
2.开头不能是数字
3.不能和关键字重名
4.见名知意
运算符
算术运算符、逻辑运算符、关系运算符、位运算符、选择运算符、赋值运算符
算术运算符
+、-、*、/、%、++、–
/:整数相除向下取整
int a=5/2;
printf("%d\n",a); //2 %d整型 int
float a=5/2;
printf("%f\n",a); //2.000000 %f浮点型 float 默认打印小数点后六位
float a=5.0/2;
printf("%f\n",a); //2.500000
printf("%.1f\n",a); //2.5 .1保留一位小数
float a=(float)5/2; // int 5短暂的强制转换成float float 5只在当前这一行
printf("%.1f\n",a); //2.5
%:只能用于整数运算
5%2==1
++
a++ <==> a=a+1
独立成句:
int a=5;
1)++a;
printf("%d\n",a); //6
2)a++;
printf("%d\n",a); //6
赋值运算:
int a=5;
1)int b= a++; // = +
printf("%d %d\n",a,b);//6 5
2)int b= ++a; // + =
printf("%d %d\n",a,b);//6 6
打印语句
int a=5;
1)printf("%d\n",a++); //5
printf("%d\n",a); //6
2)printf("%d\n",++a); //6
printf("%d\n",a); //6