摘要:
0 前言 本文讲讲编译的总体过程。 参考程序员自我修养那本书。 整个过程分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking) 1 流程阐述 1.1 预处理 预编译过程主要处理那些源代码文件中的以“#”开始的预编译指令。比如“#inc 阅读全文
摘要:
编译过程一般可以分为6步:扫描、语法分析、语义分析、源代码优化、代码生成和目标代码优化。 整个过程 词法分析:扫描器扫描代码之后,将代码生成一个个token 语法分析:语法分析器对token进行语法分析,最后生成一个语法树 对于不同的编程语言,可以共用一个语法分析器,因为只是将token生成一个语法 阅读全文
摘要:
第一讲小结 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。 h (左移) j (下行) k (上行) l (右移) 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车> 欲退出 Vim 编辑器,请输入 :q! <回车> 放弃所有改动。 或者输入 :wq < 阅读全文
摘要:
1 one-hot编码 首先讲讲one-hot编码,这种编码很简单。假设你有N个词,那么就直接创建一个N维度的向量,之后每个词在不同位置上取1来区分。N个词相当于在一个N维空间里,刚好N个单位向量。而且这些向量彼此正交 这种简单的表示方法存在几个问题: 维度高:N个词有N个维度,所以对于英文字典,就 阅读全文
摘要:
串口调试工具uartassist5.0.2,自己找到的最新版本,当时找了半天,有需要的朋友自取。 百度网盘链接地址 提取码:c1od 阅读全文
摘要:
0 前言 虽然这两个东西的值都是 空值,(0X0000),但是不是同一东西 1 正文 NULL是int类型的,nullptr是std::nullptr_t类型的,所以这两个做参数的时候,其实会发生重载 建议指针能用nullptr的地方就用nullptr 阅读全文
摘要:
0 前言 这部分确实是面试老八股了,不过我还是记录一下 1 内存分区 在C语言中,将内存分为程序代码区+数据区,其中数据区又分为静态存储区和动态存储区 在C++中,分为五种: 动态存储区: 栈区:存放局部变量,由编译器自动分配释放,程序员不能操作 堆:由程序员使用malloc/new申请,用free 阅读全文
摘要:
0 前言 未定义行为(Undefined Behavior)是指语言标准未做规定的行为。同时,标准也从没要求编译器判断未定义行为,所以这些行为有编译器自行处理,在不同的编译器可能会产生不同的结果,又或者如果程序调用未定义的行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另 阅读全文
摘要:
0 前言 来自primer的3.5部分 以下写法是有问题的 int a[] = {0,1,2} int a2[] = a; // 错误,不允许使用一个数组初始化另一个数组 a2 = a; // 错误:不能把一个数组赋值给另一个数组 有些编译器支持上面的操作,但是书上说这属于非标准功能,是编译器扩展 阅读全文