第一课
1 dos命令
2 path环境变量
3 markdown语法
1 标题 #加上空格(几个#几级标题),或者ctr+数字(1,2,3,4,5,6,) 2 列表 +按下空格即可,列表下的下一级列表可以按回车直接按tab键 + 列表 + 你好美 + 你好帅 3 代码段 三个点```(ESC下面那个键) 4 文字属性 颜色 $\textcolor{red}{文字}$ $\textcolor{rgb(255,0,255)}{文字}$ 5 图片 图片路径 相对路径 ../ 上一层路径 ./ 当前路径 绝对路径:带盘符 6 表格 |姓名|年龄|编号|住址| 在按下回车,表格就出来了 //简单方法: 右键插入表格 7 了解内容 链接 [百度两下](www.baidu.com) 脚注 帅哥[^1] [^1]: 和..一样的人 表情 : :加上表情的英语单词 :smile: :sweat_smile: html标签(有学过的可以直接使用,没学过的直接跳过) 8 画图工具链接https://www.processon.com/
第二课
怎么用vs2022
vs2022是IDE(集成开发环境),不是编译器
1 创建项目
-
选空文件,配置新项目时一个解决方案下面可以存在多个项目
2 常用窗口
-
视图
-
解决方案资源管理器
-
输出 ,错误列表(用拖动把这两个放一起)
-
-
项目名字
-
引用: 程序调用其他二进制文件中的函数
-
外部依赖项: 代码文件依附的其他头文件
-
筛选器: 帮助写代码人归类处理代码文件,不存在真实的文件夹(学会自己规划筛选器)
-
头文件:.h文件
-
源文件:.c 文件
-
资源文件:素材之类的(图标ico——拷贝到文件当前所在目录,右击添加资源导入图标,音乐之类的)
-
3 项目文件
-
xxx.vcproj: 工程文件,主要描述工程的各项属性
-
xxx.vcxproj.filters: 视图文件,描述项目中的筛选器(筛选器配置文件)
-
xxx.vcxproj.user: 用户配置文件,打开项目 窗口位置,窗口布局信息(打开项目配置不变)
4 解决方案文件
-
xxx.sln 文件: 解决方案管理文件
-
.vs文件: 可能是隐藏文件,一般发项目给别人可以删掉这个东西
5 生成的exe文件路径
-
Debug版本:调试版
-
Release版本:发布版
-
x64: 64位操作系统(发别人)
-
x86:32位操作系统
6 发和打开别人的项目
-
直接点击:xxx.sln
-
直接点击:xxx.vcproj
-
发代码发整个压缩文档
7 操作
SDL检查(用来忽略因为vs的改进的一些函数会导致报错问题) + 平台工作集 + C/C++标准 + 字符集 unicode编码 多字节编码 + 参数提示 + 快捷键注释 + 垂直编辑: alt +鼠标左键移动 + 重复上一行代码: ctr+d + 代码查找: ctr+f (还可以代码替换) + 移动行: alt+↓
第三课
1 进制与进制转化
常用进制
-
十进制:0123456789
-
二进制:01
-
0b开头的数字
-
-
八进制:01234567
-
0开头的数字
-
-
十六进制:0123456789ABCDEF(A读幺幺)
-
0xAFF
-
-
其他进制,其实就是不同的单位表示法
-
时间: 60进制 60s=1min 60min=1h
-
天数: 24h=1day
-
数量: 一箱=12瓶
-
.......
-
进制转换
-
科学法
-
hex: 十六进制
-
dec: 十进制
-
oct: 八进制
-
bin:二进制
-
手工法
-
十进制转其他进制: 短除法
-
其他进制转十进制:加权法
-
其他进制之间转换
-
二进制转八进制: 三位二进制位代表一位八进制位
-
二进制转16进制: 四位二进制代表一位进制进制
-
2 存储单位
位bit(比特): 一个二进制位,只能存储0和1
字节byte: 8个进制位为一个字节(B),常用单位换算
-
1B(bytes)=8bit 字节
-
1KB=1024B 千字节
-
1MB=1024KB 兆字节
-
1GB=1024MB 吉字节
-
1TB=1024GB 太字节
-
1PB=1024TB 拍字节
-
1EB=1024PB 艾字节
-
1ZB=1024EB 泽字节
-
1YB=1024ZB
-
1BB =1024YB
疑问: 买的1TB硬盘为什么不是1TB
因为厂商不是用1024去换算,他是用1000换算
256G=256000000000B
计算机实际的计算方式是用1024--->256000000000B/1024/1024/1024约等于238
3 二进制编码
所有的数据在计算中存储都是用补码的形式存储的
机器数
一个在数在计算机中的二进制表示,机器数带符号的
-
最高位是0: 正数 3: 0000 0011
-
最高位是1: 负数 -3: 1000 0011
(但是机器数没办法计算所以有了补码)
原码
机器码:二进制码
原码就是机器码引入符号位
-
最高位是0: 正数
-
最高位是1: 负数
反码
原码符号位不变,其他位取反
补码
补码=反码+1
计算机中所有数据存储都是用补码存储,只是正数三码合一
!!!注意点: -0编码表示所有的最大负数,具体到具体的数据范围的时候,负数是要比正数多一个
4 C语言数据存储
防止存储的数据溢出(超过了存储范围)
-
int: 整形--->4个字节(long=int)
-
char: 字符-->1个字节
-
1个字节8位
-
最大正数: 0111 1111 +1 -1 =1*2^7-1
-
最大负数: -127-1 =-128(多了一个-0编码)
-
-
unsinged char: 无符号 只有正数
-
最大正数: 1111 1111+1-1 2^8-1=255
-
-
float:单精度--->4个字节
-
double双精度--->8个字节
-
注:short--->2个字节;longlong--->8个字节
小数的数据存储
了解一下,C语言分为两种小数
-
单精度小数(float): 小数末尾加个f表示单精度小数 1.1f
-
双精度小数(double): 编译器中写的小数默认位双精度 1.1
计算机中存储小数是用指数和尾数方式去存储
小数转二进制
为什么小数不精准
二进制数 | 对应的十进制数 |
---|---|
0.0000 | 0 |
0.0001 | 0.0625 |
0.0010 | 0.125 |
0.0011 | 0.1875 |
0.0100 | 0.25 |
大小端存储(了解)
计算机中存储正数分为两种形式
-
大端模式:数据的高字节保存在内存的低地址中,数据的低字节存储到高地址中
-
小端模式:数据的高字节保存在内存的高地址中,数据的低字节存储到低地址中
后续网络数据传输都是采用大端模式,通过计算机内存查看的方式进行验证
第四课
程序编译4个过程
整个程序的编译过程
-
预处理过程
-
编译过程
-
汇编过程
-
链接过程
1 预处理阶段
gcc -E xx.c -o xx.i
修改xx.c文件,把#include 指令包含的头文件中内容直接插入到我们的文件中,得到的一个新的C语言文件,通常预处理后产生的新文件用.i作为结尾
-
所有注释用空格替换
-
所有#define删掉,展开所有的宏
-
处理所有的条件编译(#if #ifdef)--->后面讲
-
处理#include,展开包含
#include <stdio> #define MAX 100 int main() { MAX; return 0; }
上述代码预处理后生成的文件test.i 部分内容:
注意: 预处理不做语法检查,代码有错误检查不出来
2 编译过程
gcc -S xx.i -o xx.s
编译过程就是把高级语言翻译为汇编语言的过程,主要完成以下内容:
-
词法分析
-
语法分析
-
语义分析
-
源代码优化
-
目标代码生成
-
目标代码优化
编译过程会检查出所有的语法错误。
test.i 编译成为汇编代码
3 汇编过程
gcc -c xx.s -o xx.o
把汇编代码转换成为机器语言,生成目标文件,这个文件打开一般是乱码形式
4 链接阶段
gcc xx.o -o xx.out
将所有的目标文件和需要的库连接到一起
-
静态库(xx.lib)
-
动态库(xx.dll)
window 安装gcc
gcc是win系统的编译器——可以用记事本写代码
下载MinGW:MinGW - Minimalist GNU for Windows download | SourceForge.net
配置path环境变量: D:\tools\MinGW\bin
下载gcc cmd键入: mingw-get install gcc
验证gcc安装是否成功: 键入 gcc -v 显示相关版本信息,代表安装成功
vs cmake项目
了解一下,了解内容,掌握以下内容
-
打开别人的cmake项目
-
运行cmake项目