- 入门1-3总结
- 一、Linux命令
- 1.基本知识
- 根目录: /
- 家目录: /home/hq ~
- hq 用户名 whoami
- @ 间隔符
- ubuntu 主机名 hostname
- : 间隔符
- :和$中间位置: 当前路径 pwd
- $ 输入提示符
- 默认在家目录 /home/hq
- 绝对路径:从根目录开始逐级向下 /home/hq/a/b/c
- 相对路径:以当前位置为参照找上一级或下一级 a/b/c
- $ : 普通用户
- #: 超级用户 root
- 2.新建
- mkdir 文件夹名: 创建文件夹
- touch 文件: 创建普通文件(带后缀名)
- 连级创建:mkdir -p 需要创建的路径
- 同时新建多个文件夹:mkdir a b c 名字中间空格隔开
- 同时新建多个文件:touch file1.c file2.c
- 多层嵌套:mkdir -p 122/123/124
- 相同路径下,不能创建同名文件夹,会报错。
- 3查看
- ls: 显示当前路径下的文件
- ls -l: 显示当前路径下文件的详细信息
- ls -a: 显示当前路径下的所有文件,包含隐藏文件.
- ls -al:显示当前路径下所有文件包含隐藏文件的详细信息
- 通过颜色区分文件类型
- 蓝色:文件夹
- 白色:普通文件
- 绿色:可执行文件
- 文件类型 7种 bcd-lsp
- b 块设备文件 /dev
- c 字符设备文件 键盘,鼠标 /dev/input
- d 目录文件 文件夹
- - 普通文件 .c .h .txt
- l 软链接文件 <LinuxC高级>
- s 套接字文件 <网络编程>
- p 管道文件 <IO>
- 文件权限
- rwx :可读可写可执行 r-- :可读不可写不可执行(只读)
- rwx rwx rwx 自己 组内 其他
- r:4 w:2 x:1 -:0
- rwx:7 r-x:5
- 修改权限:chmod 777 文件、文件夹
- 显示内容:
- -rw-rw-r-- 1 hq hq 0 Dec 23 17:53 1.txt
- 第一列:当前文件的类型以及权限
- 第二列:连接数 (当前文件中包含几个文件夹)
- 第三列:用户名
- 第四列:组名
- 第五列:文件大小 字节
- 第六 七 八列:最后修改的时间 最后一列:文件名
- 4.路径切换
- cd 路径:切换到当前目录下的一个路径
- cd :直接切换到家目录
- cd ~:切换到家目录
- cd .. :切换到上一级目录
- cd . :在当前目录下切换,没有效果的
- . :当前路径
- ..:上一级目录
- cd / :切换到根目录
- 5.快捷键
- ctrl+shift+'+':终端窗口放大
- ctrl+'-':缩小
- ctrl+'l':清屏
- tab:自动补全
- 切换中英文:ctrl + 空格
- 终止程序:ctrl + ‘c’
- 上下键:可以查找之前敲过的命令
- 在代码中输入main,按下tab键,自动补全main函数
- ctrl+'/':单行注释代码 ctrl + 'shift'+'a':多行注释代码
- 6.删除
- rm 普通文件:删除文件
- rm -r 文件夹:删除文件夹
- 7.复制
- cp 文件名 路径:复制文件
- cp 文件夹 路径 -r :复制文件夹
- 8.移动 重命名 改名
- 移动:mv 文件/文件夹 路径:移动文件或文件夹
- 重命名: mv 旧名称 新名称
- 移动时改名:mv 旧名称 路径 / 新名称
- 1.基本知识
- 二、编译
- 1.编程语言的发展历程
- 机器语言:01010101010
- 汇编语言:二进制的文本形式
- 高级语言:C语言 java c++(计算机不能直接看懂)
- 2.vi编辑器
- 打开:vi 文件名
- 三种模式
- 命令行模式:此模式下只能进行一些特定指令的操作,默认进入此模式
- 插入模式(编辑模式):可以编写内容
- 底行模式:进行一些特定指令的操作(退出)
- 模式之间的切换
- 命令行模式 ---a/i/o--> 插入模式 ---esc--> 命令行模式
- 命令行模式 ---shift+:/ 空格----> 底行模式
- 命令行
- 复制:yy 多行 nyy(n:表示的是行数)
- 删除(剪切):dd ndd
- 粘贴:p
- 撤销:u
- 反撤:ctrl+r
- 光标的移动:移动到首行:gg 移动到末行:G 移动到行首:0 移动到行尾:$
- 整理代码的格式:gg=G
- 底行模式
- 指定行的复制:5,10y
- 指定行的删除:5,10d
- 保存:w
- 退出:q
- 保存并退出:wq
- 暂时退出:!
- 查找:/str
- 替换: s/str1/str2 将光标所在行的第一个str1替换成str2
- 全文替换:%s/str1/str2 /g
- 设置行号:set nu
- 取消行号:set nonu
- 取消高亮:nohl
- 3.简单的编辑流程
- 创建一个c程序文件:touch hello.c
- 打开此文件:vi hello.c / code hello.c
- 写代码
- 编译代码:gcc 文件名---> gcc hello.c (使用gcc编译器,编译.c文件,默认生成a.out可执行文件)
- 执行代码:./a.out
- 4.gcc编译器
- 四步:1.预处理 2、编译 3、汇编 4、链接
- 1、预处理: 删除注释,展开头文件,替换宏定义
- 命令:gcc -E hello.c -o hello.i
- 2、编译 检查语法错误,有错报错,没有问题转换为汇编语言文件
- 命令:gcc -S hello.i -o hello.s
- 3、汇编 将汇编文件转成二进制文件
- 命令: gcc -c hello.s -o hello.o
- 4、链接 链接库文件 最终生成机器可以识别的可执行文件
- 命令: gcc hello.o -o hello 执行:./hello
- 1.编程语言的发展历程
- 三、C语言
- 1.计算机数据表示形式
- 数值型数据
- 二进制:0b开头 八进制:0或0o开头 十六进制:0x开头
- 非数值型数据
- 字符由' '单引号包裹
- '\0' 0 字符串结束标志
- '\n' 10 换行
- ' ' 32 空格
- '0' 48 字符0
- 'A' 65
- 'a' 97
- '2' - 48 = 2
- 'A' + 32 = 'a'
- 'a' - ' ' = 'A'
- 字符型数字转成数值型数据:字符0-48=数字0
- 字符型数据-48=数值型数据
- 大小写转换:A:65 ---> a:97
- 大写转小写:大写字母+32=小写字母
- 小写转大写:小写字母-32=大写字母
- 字符由' '单引号包裹
- 数值型数据
- 2.词法符号
- 分类
- 关键字 标识符 运算符 分隔符 标点符号
- 关键字 32
- 存储类型:auto(自动) static(静态) extern(外部引用) register(寄存器)
- 数据类型:char(字符) short(短整型) int(整型) long(长整型) float(单精度浮点型) double(双精度浮点型) signed(有符号) unsigned(无符号)
- 构造类型:struct(结构体) union(共用体) enum(枚举)
- 选择类型:if(判断) else(否则) switch case default
- 循环语句:for while goto do break continue
- 其他类型:void(空) typedef(重定义) const (常量化) sizeof(计算数据的空间大小) volatile(防止编译器优化) return(返回值)
- 标识符
- 标识符用于给变量 宏名 函数名 重定义名
- 命名规则: 1.由数字 字母 下划线组成 2.数字不能开头 3.不能和关键字重名 4.见名知义
- 变量
- 概念:在程序的运行过程中会发生变化的数据 定义格式:存储类型(auto 省略不写) 数据类型 变量名
- 运算符
- 算术运算符
- + - * / % ++ -- /
- 两个整数相除,结果会自动取整
- int a= 9 / 2= 4 // 4.5
- float a= 9/2; a=4.00000
- float a=9.0/2 ;a=4.5000
- 逻辑运算符
- && 逻辑与:全真则真,一假则假
- || 逻辑或: 一真则真,全假则假
- ! 逻辑非: 非真即假,非假即真
- 截断法则: 逻辑与运算中,前边表达式结果为假,后边表达式不再执行,直接返回假 逻辑或运算中,前边表达式结果为真,后边表达式不再执行,直接返回真
- 位运算符
- 二进制数 0 1
- & 位与:全1则1,有0则0
- | 位或:有1则1,全0则0
- ^ 异或:相同为0,不同为1
- ~ 取反:0变1,1变0
- << 左移
- >> 右移
- 整数在存储时是以补码进行存储
-
-
- 运算用补码进行运算,再转为原码。
- 负数补码转反码:-1。
- 左移快捷方式:-6 << 3 ---> -6*2^3=-48
- 右移快捷方式:-32 >> 2 ---> -32/2^2=-8 如果除不尽的话,需要向下取整
-
- 关系运算符
- > < >= <= == !=
- 赋值运算符
- = += *= -= /=
- 三目运算
- 单目运算符:使用此符号运算时只需要一个操作数
- 双目运算符:使用此符号运算时只需要两个操作数
- 三目运算符:使用此符号运算时只需要三个操作数
- 三目运算符(条件运算): ?:
- 语法:表达式1?表达式2:表达式3
- 运算规则:判断表达式1是否成立?如果成立执行表达式2(:前面部分),如果不成立执行表达式3
- 运算符优先级
- 单目运算符 ! ~ ++ --
- 算术运算符 * / % + -
- 移位运算符 << >>
- 关系运算符 < <= > >= == !=
- 位与运算符 &
- 异或运算符 ^ |
- 逻辑运算符 && ||
- 条件运算符 ?:
- 赋值运算符 = += *= /= %= ...
- 口诀:单算移关与 异或逻条赋。 单目运算,从右向左单条赋。 逗号运算符优先级最低。
- 置1/0公式
- 置一公式:a|(1<<n)
- 置零公式:a&(~(1<<n)) a=5===>101 010 5|(1<<1)=== 5|2 = 111
- 算术运算符
- 分类
- 3.变量
- 概念:在程序的运行过程中会发生变化的数据
- 定义:存储类型 数据类型 变量名
- 数据类型
-
- 变量分类
- 全局变量:定义变量时定义在函数外部
- 局部变量:定义变量时定义在函数内部
-
-
- 4.常量
- 概念:在程序的运行过程中不会发生变化的数据
- 分类
- 字符型常量
- 使用' '引起来的数据都称之为字符型常量。
- 'a'--->字符a
- '0'--->字符0
- '\n'--->换行符
- ' '只能引起来一个数据(一个字母 一个数字 一个符号)
- \ :代表转义,后面会跟随八进制 十六进制 一些字母 符号;
- \?--->文本?
- ' \' '--->字符引号
- ' \\ '--->字符 \
- '\x41'--->字符A--->'A'--->'\101'
- 字符串常量
- 使用" "引起来的数据称之为字符串常量。
- "hello"--->字符串hello ---> 'h' 'e' 'l' 'l' 'o'。
- 对于字符串数据程序会在最后添加\0,做为字符串结束的标志,"abc"---->3个 占4个字节空间。
- 整型常量
- int存储
- 浮点型常量
- 一般使用float存储
- 指数常量
- 3*10^2--->3e2 5*10^20--->5e20
- 标识常量
- 宏定义:起到标识作用,宏替换 、宏代替
- 定义格式:#define 宏名(一般大写) 常量或者表达式
- 特点:使用宏时,只做单纯替换,不进行计算
- #define N 2
- #define M N+3 // 2+3
- #define NUM N+M/2+1 // 2+2+3/2+1
- void main()
- { int a = NUM; // 6
- printf("%d\n",a); // 6 }
- 字符型常量
- 5.输入输出
- 按照字符输入输出
- 函数:三要素:功能 参数 返回值
- getchar()
- 功能:按照字符输入(从终端获取一个字符)
- 参数:没有参数
- 返回值:你输入的字符的ascii(int 类型)
- int a=getchar(); //输入A
- printf("%d\n",a);//输出65
- putchar()
- 功能:向终端输出一个字符
- 参数:你要输出的字符的ascii值,也可以写字符
- 返回值:输出字符的ascii值
- putchar(97);//输出a
- putchar('\n');//换行
- 按照格式输入输出
- int printf(const char *format, ...);
- 功能:按照某种格式向终端输出一串信息
- 参数:一个或者多个,一个字符串,用于填写想要呈现的信息内容, 后续参数由前期字符串中的格式的个数决定。
- 返回值:输出字符的个数。
- 格式: int %d 整数
- float %f
- double %lf
- char %c
- 字符串 %s
- 十六进制 %#x %x
- 八进制 %#o %o
- 地址 %p
- 指数 %e
- %-m.n 含义:m:位宽 n:保留几位小数 -:左对齐
- 按照字符输入输出
- 1.计算机数据表示形式
- 一、Linux命令