0、大纲
1、Linux命令
2、基础内容:进制转换、词法符号、变量常量、输入输出
3、语句:分支语句、循环语句、循环控制语句
4、数组:一维数组、字符数组、排序、二维数组
5、指针:一级指针、二级指针、指针和数组、指针数组、数组指针
6、函数:函数基本用法、string函数族、开辟堆区空间、递归函数
7、结构体:结构体变量、结构体数组、结构体指针
8、共用体
9、枚举
一、Linux命令
Linux一切皆文件,两大特殊位置:
①根目录:\ ②家目录: ~ /home/hq
1、快捷方式
放大终端:ctrl shift +
缩小终端:ctrl -
2、命令行
hq :用户名
ubuntu :主机名
:和$中间的部分:当前路径
$:普通用户
3、新建与删除
3.1、新建
文件夹:
mkdir 文件夹名
mkdir 文件夹1 文件夹2 文件夹3
文件夹的嵌套创建:
mkdir -p 文件夹1/文件夹2/文件夹3
文件:
touch 文件名(文件名要有后缀!!)
同名问题:
文件夹不允许同名;
文件同名创建或复制粘贴或移动时,相当于更新该文件的时间戳,会覆盖原文件
3.2、删除
rm 删除文件
rm -r 删除文件夹
rm -rf 强制删除文件夹和文件
4、查看
4.1、ls命令
ls 查看当前路径下的所有内容
ls -a 查看当前路径下所有内容,包括隐藏文件
ls -l 查看当前路径下所有内容的详细信息
ls -l 文件名 查看该文件的详细信息
ls -al 查看当前路径下所有内容的详细信息,包括隐藏文件
4.2、详细信息
- 文件类型
文件类型一共有7种:bcd-lsp
b c d - l s p 块设备文件
字符设备文件
目录文件
普通文件 软连接文件 套接字文件 管道文件 /dev 键盘,鼠标
/dev/input
文件夹 .c .h .txt <LinuxC 高级>
<网络编程>
<IO>
rw-rw-r-- 文件权限
标记 r w x - 含义 可读 可写 可执行 禁止 权重 4 2 1 0 修改权限: chmod 777 文件/文件夹
权限一共9个字符,共分三组,分别表示自己,组内,组外成员的权限高低
1 连接数
hq 用户名
hq 组名
538 字节大小
Dec 26 20:00 修改时间
bit.c 文件名
5、路径切换
5.1、路径格式
绝对路径:从根目录开始逐层向下
相对路径:以当前位置为参考
5.2、路径切换
下一级 cd 文件夹
上一级 cd ..
上一次 cd -
家目录 cd ~或cd 或 cd /home/hq
6、复制,移动,重命名
6.1、复制
文件 cp 要复制的文件 目标地址
文件夹 cp -r 要复制的文件夹 目标地址
6.2、移动
mv 要移动的文件/文件夹 目标地址
6.3、重命名
cp 目标文件 新名字
mv 目标文件/文件夹 目标地址/新名字
mv 目标文件/文件夹 新名字
6.4、mv和cp的区别
对于储存:
cp 原文件还在
mv 原文件不在
对于重命名:
cp 相当于另存为
mv 只是重命名
7、打开关闭终端
7.1、打开终端
1、常规方法
2、ctrl shift n:
打开终端,路径为当前文件夹内
3、ctrl alt t:
打开终端,路径为home
7.2、关闭终端
1、常规方法
2、exit
8、vi编辑器和vscode编辑器
8.1、vi编辑器
命令行模式(默认)
复制,粘贴,撤销,光标移动
复制 yy nyy(光标选中y n:行数 复制几行)
删除(剪切) dd ndd
粘贴 p
撤销 u
反撤 ctrl r
光标移动首行 gg
光标移动最后一行首行 G
光标移动行首 0
光标移动行尾 $
插入模式
写代码
底行模式
保存,查找,替换,退出
指定行复制 5,10y 复制5-10行
指定行删除 5,10d
保存 w
退出 q
保存并退出 wq
强制 !
vsp 分屏本文件
vsp 文件名 分屏打开另外一个文件
查找 /找的东西
替换 s/a1/a2 光标所在行的第一个a1替换成a2
s/a1/a2/g 光标所在行的所有a1替换成a2
%s/a1/a2/g 改变全文
1,$s/a1/a2/g 改变全文
设置行号 set nu
取消 set nonu
取消高亮 nohl
8.2、vscode编辑器
打开文件夹:code 文件夹
创建文件:**.c
编译运行:在终端进行
9、gcc编译器
9.1、简写
gcc 文件:
会生成一个a.out文件,运行即可,一个文件夹下只有一个a.out,后面的会覆盖前面的
gcc 文件 -o 名字:
会生成一个指定名字的可执行文件
9.2、完整过程
预处理
展开头文件,替换宏定义,删除注释等
gcc -E test.c -o test.i
编译
检查语法,有错报错,没错则生成汇编文件
gcc -S test.i -o test.s
汇编
生成不可执行的二进制文件
gcc -c test.s -o test.o
链接
链接库文件,最终生成机器可以识别的二进制的可执行文件
gcc test.o -o test(可执行文件名)
运行
./test
二、 基础内容
1、基础常识
1.1、 计算机数据的表现形式
1.1.1、 数值型数据
1、 进制
1、二进制:
由0和1组成,逢2进1,2:10
2、八进制:
由0到7组成,逢8进1,8:010,0是标志
3、十进制:
由0到9组成,逢10进1
4、十六进制:
由0到9,a到f组成,逢16进1,16:0x10,0x是标志
a | b | c | d | e | f |
10 | 11 | 12 | 13 | 14 | 15 |
2、进制转换(计算器,程序员模式)
1、十进制转二进制,十进制转八进制,十进制转十六进制
方法一:短除法:
十进制转二进制时除以2,十进制转八进制则除以8,十进制转十六进制除以16
方法二:拆分法:
转成二进制:拆成2的次幂进行计算,最后按照2的降幂排序,系数提取出来就是结果:
转成八进制:同理,只是将目标拆成8的次幂计算:
转成十六进制也同理:
2、二进制转八进制,二进制转十六进制
三换一:,例如:
四换一:,例如:
3、二进制转十进制,八进制转十进制,十六进制转十进制
二进制:二进制的每一位都看成系数,这些系数分别乘2的次幂,次幂按照降幂排序,最右边是2的0次幂。
八进制同理,十六进制同理。
1.1.2、非数值型数据——字符
字符由' '引用,多个字符可组成字符串,字符串由" "引用。
1、ASCII码的使用
man手册:查看函数和命令的用法
可执行程序或shell命令
系统调用(内核提供的函数)
库调用(程序库中的函数)
ASCII码表
\0 | \n | ' ' | 0 | 9 | A | Z | a | z |
0 | 10 | 32 | 48 | 57 | 65 | 90 | 97 | 122 |
字符串结束的标志 | 换行 | 空格 | 字符0 | 字符9 |
2、'\'转义字符
'n'-->n '\n'-->换行
printf("%c\n",'n'); //n
printf("%c\n",'\\'); // \
printf("%c\n",'\n'); //换行
1.2、计算机存储单位
位 bit 字节 byte
1B=8bit 1KB=1024B
1MB=1024KB 1GB=1024MB
1.3、c语言编程基本结构
#include<stdio.h>
//#预处理的标志 <>头文件
int main() //主函数,有且只有一个,程序的入口
{
printf("hello world\n"); //标准的输出语句
return 0; //返回值 main中,表示程序的结束
}