随笔分类 - c/c++
摘要:上次说到还留有两个问题。 这次我们先处理第一问: 为什么解压到一半就停止的情况,问题在于我们解压部分的函数的循环判断。 我们知道,我们用哈夫曼码形成字符压入压缩文件,但是,哈夫曼码极有可能会组成11111111也就是-1,即很有可能达成循环终止条件造成退出,所以我们需要适当修改一下代码—— 我们要注
阅读全文
摘要:何谓哈夫曼树?—— 百度百科:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 哈夫曼树的应用?—— 哈夫曼编码 与 哈夫曼译码。 哈夫曼树为基础的项
阅读全文
摘要:声明:源码同《STL源码剖析》(侯捷) STL: C++标准的模板库,通用性高。 常见的数据结构封装。 提供常用的通用算法。 STL六大组件: 容器 算法 迭代器 仿函数(函数对象) 适配器 配置器 空间配置器的作用: 1.提高代码复用率,功能模块化。 2.减少内存碎片问题。 比如我们list是链式
阅读全文
摘要:如果问你:malloc和new有什么区别?讲讲malloc,越多越好? malloc 和 new都是基于堆上开辟出对应的空间,这段空间除非进程结束不然不会释放,所以分别需要free 和 delete来释放。 new 还可以用 new[] 来开辟一段连续的空间,new和malloc不同,new在为一个
阅读全文
摘要:一、首先我们先了解一下三个概念: 1.重载。2.隐藏。3.覆盖(重写) 如何实现重载?——2个条件: 1-在同一作用域内。 2-两个函数函数名相同,参数不同,返回值可以不同。 此时两个函数就实现了重载,当然这是C++对于C特有的,因为C的时候对参数并没有太多的考虑,C++的编译器在编译时对函数进行了
阅读全文
摘要:阅前须知:此篇博客的大部分内容来自《C语言深度解剖》一书以及网上查阅各个资料还有自己的亲自实践。代码主要运行在linux环境下和VS2013环境下,希望读者看了以后不要照抄,要学会结合自己的思考,本篇博客主要记录了部分关键词拓展或者说是用到该关键词需要注意的地方,说白了就是死命抠细节,不是单纯介绍关
阅读全文
摘要:今天我们来聊一聊,那一些特殊的指针。 1.指针数组和数组指针。 我们先来看下面两个语句: 这个时候我们需要引入一个很重要的东西——运算符优先级表。 不难看出,“ [] ”优先级高于“ * ”,不难得出结论语句(1)中p先和“ [] ”结合,语句(2)中p因为()的存在,先和" * "结合,所以可以得
阅读全文
摘要:今天我们来讲讲,关于C语言里栈帧的那些事。 栈帧可以说是C语言里比较难理解的一个点里,但是,难的东西,要是搞懂了,那么拿下这门语言,也不晚了。 首先要明白,C语言中内存分配方式有三种: 1.静态存储区域分配。 地址空间概念在程序运行生命周期之间都存在,就比如一些全局变量和一些static定义的局部变
阅读全文
摘要:今天简单讲一下,宏定义和函数的区别。 我们都知道,利用宏也可以做一些简单的运算。 比如我们#define SWAP(x,y) x>y?x:y 上面一个宏把SWAP定义成一个比较出较大值的函数。 但是宏和函数还是有区别的。 宏:只做简单的文本替换,#define允许把参数替代到文本中。 宏替换时先检查
阅读全文

浙公网安备 33010602011771号