文章目录
Linux目录结构
- ~:表示用户的家
- /:表示根目录
文件系统:管理工具 --> 管理磁盘的
何为文件系统:用来组织数据存储介质上的存储方式或者检索方式
注意:尽量不要操作根目录
Home目录:存放的是Linux中用户对应的文件夹;你有多少个用户,就会有多少个对应的文件夹。
不同的用户操作的权限是不一样的
用户的分类
- 普通用户:有些操作时无法完成的
- 超级用户:root 拥有最高权限
区分不同的文件类型:用颜色来区分
Linux基本命令
man 命令去查看命令说明
格式: man 需要查看的哪个命令的名
- pwd命令:显示当前所在的目录位置
使用命令的格式:命令名 操作的内容
- ls: 列出当前所在目录下的内容
- ls -a: 列出当前所在目录下所有的内容,包括了隐藏的内容(.开头的和…开头的)
- ls 文件夹名字或者路径:列出指定路径下的内容
- cd命令:切换目录,换路径的
- cd …:放回上一层目录
- cd /:切换到根目录下
- cd -:返回到你上一次操作的那个目录下
绝对路径:根目录开始的 /
相对路径:不是/开头的路径
mkdir: 创建目录/文件夹路径
touch: 创建文件/路径
可以同时创建很多个文件 格式: touch file1 file2 …filex
rm: 删除文件/路径
rmdir: 删除空目录
rm -r: 删除文件夹/路径(空目录或者非空目录都可以删除)
拷贝
cp: 需要拷贝文件/路径 路径
拷贝整个目录:
cp -r 原文件夹/路径 目标路径
移动命令:
mv 原文件/路径 目标路径
mv:重命名
格式: mv 原文件名 新名字
添加用户
- 设置用户名:
sudo -m useradd ***
参数-m
表示创建用户目录
- 设置密码:
sudo passwd ***
输入密码并且输入确认密码
写代码用到的工具
Vim文本编辑器
它有三种模式:
插入模式:只有在这种模式下才可以编辑
命令行模式:输入命令的,复制黏贴等操作
底行模式:输入命令的,保存文件、退出等操作的。
模式之间的切换:
命令行模式 —> 插入模式: 键盘输入i即可
插入模式 —> 命令行模式:按键盘上的ESC
命令行模式 —> 底行模式: shift:wq 保存并退出
:w / :q :q!-à强制退出
命令 | 功能 |
---|---|
a/A | 光标后插入/跳到行尾 |
i/I | 光标所在处插入/跳到行首 |
o/O | 下插一行/上插一行 |
[N]x | 删除从光标开始开始连续的N个字符 |
[N]dd | 剪切N行 |
[N]yy | 复制N行 |
p | 粘贴 |
u | 取消操作 |
:N | 移动光标到第N行 |
1G | 到第1行 |
G | 最后1行 |
:set number | 显示行号 |
:set nonumber | 取消显示行号 |
/str(支持正则表达式) | 搜索字符str |
n | 继续查找 |
N | 反向继续查找 |
range y | 块复制 |
gcc编译器
C语言的源程序—代码是给程序员去看;计算机只能识别01这样子的二进制数据
将.c源文件 —> 计算机能识别的二进制文件
编译器:gcc编译器
工作的4个步骤:
预处理 —> 编译 —> 汇编 —> 链接 —> 得到可执行文件
- 预处理:gcc -E .c源文件 -o 目标.i
- 编译: gcc -S 目标.i -o 目标.s
- 汇编: gcc -c 目标.s -o 目标.o
- 链接: gcc 目标.o -o 3
- 执行可执行文件: ./可执行文件
gcc 源文件名字 -o 目标可执行文件名字
计算机基本结构
输入设备(键盘、鼠标)、cpu、存储器、输出设备(显示屏、终端)
外存:位于电脑上,例如磁盘、U盘等。存CPU上暂时不使用的数据或者程序!容量比较大。长期存储数据
内存:存放CPU需要使用的程序和数据,容量比较小。掉电的时候数据消失
寄存器:存在于CPU中的,是一个存取速度很快的存储器,容量很小 —> 正在使用的程序和数据
程序: 就是计算机系统可以识别的一组二进制的有序指令。
程序员写的.c源文件 —> a.out 这样子的二进制可执行文件!
关键字 --> 数据类型
关键字
一定是小写
分类:
-
表示数据类型的关键字:char、double、enum、float、int、long、short、struct、union、void
-
表示控制语句的关键字:break、case、continue、default、do、else、for、goto、if、switch、While
-
表示数据存储类型的关键字:auto、extern、register、static
-
其他关键字:
-
const 修饰符 —> 只读
-
Return —> 结束函数
-
sizeof —> 计算内存大小
-
volatile —> 防止编译器优化
-
typedef —> 对已经存在的数据类型进行重命名
-
signed:有符号 —> 数据可以有正数也可以有负数
-
unsigned:无符号 —> 只有正数
-
数据类型
原码、反码、补码,并且有符号数的最高字节的最高位表示符号位,0表示是正数,1表示负数;负数在内存中就是以补码的形式存储的。
注意:内存的基本单位是字节 1字节占8个位
浮点型数据,整数部分和小数部分,他在内存中的存储就不能和整数的存和取的方式一样!
不能用=,只能近似
Float: 单精度占4个字节 小数点后面有6位
Double: 双精度 占8个字节 小数点后面有15位
定义一个float类型的变量a,判断他的值是否和0相等?
If(a>=-0.000001 && a<=0.000001)
C的数据
程序最重要的是处理数据
数据的分类:数值类型数据和非数值类型数据
数值数据:能够进行算术运算得到明确数值概念的信息称为计算机数值数据
非数值数据:图片、语言、语音等。
数值数据:
表现形式有4种
二进制 | 0~1 用b开头 | b0100 1000 | 满2进1 |
---|---|---|---|
八进制 | 0~7 | 076 | 满8进1 |
十进制 | 0~9 | 120 | 满10进1 |
十六进制 | 0~9 a~f | 0x98 | 满16进1 |
2进制、8进制、16进制转成10进制
每一位的数值*进制技术^第几位之和
10进制转成2、8、16进制
字符数据转成对应ASCII码值来表示:
单引号括起来的就是字符
- 数字字符 ‘0’~‘9’ ASCII码值:48~57
- 空字符 ‘\0’ ASCII码值: 0
- 大写字母字符 ‘A’~’Z’ ASCII码值: 从65开始 依次+1即可
- 小写字母字符 ‘a’~’z’ ASCII码值: 从97开始 依次+1即可。
常量
常量:值是不可以修改的
变量:值是可以修改的
常量分类:
- 整型常量:各种进制数都可以
- 字符常量:’a’
- 长整型常量: 78L
- 无符号整型常量: 78U
- 浮点型常量:1.2 2.5
- 字符串常量:“hello world”----双引号括起来的,是字符串常量。在内存中占几个字节?
注意:字符串常量都是‘\0’字符结尾的,因为’\0’是字符串的结束符号。
‘\0’的ASCII码值是多少: 0
代码中宏来表示常量.
宏定义的格式:#define 名字 数值
本质:就是在预处理的时候把宏直接替换成对应的数据。
总结:宏在使用的过程中就是一个简单的文本替换!!!
好处:只要修改宏对应的值,凡是有用到这个宏的地方,值都会被改掉 —> 一改全改的效果!
宏还可以用来表示函数,叫宏函数
例如:
#include <stdio.h>
#define suan(x, y, z, f) (x)*(y)*(z)*(f)
int main()
{
int day = 365, hour = 24, minute = 60, second = 60;
printf("一年共有%d秒\n", suan(day, hour, minute, second));
return 0;
}