计算机常识
梨粥
这个作者很懒,什么都没留下…
展开
-
系统栈
系统栈又叫调用栈,栈。调用栈最经常被用于存放子程序的返回地址。在调用任何子程序时,主程序都必须暂存子程序运行完毕后应该返回到的地址。因此,如果被调用的子程序还要调用其他的子程序,其自身的返回地址就必须存入调用栈,在其自身运行完毕后再行取回。在递归程序中,每一层次递归都必须在调用栈上增加一条地址,因此如果程序出现无限递归(或仅仅是过多的递归层次),调用栈就会产生栈溢出。...转载 2019-03-09 14:32:39 · 2634 阅读 · 1 评论 -
void指针、内存的分配与释放
c++中使用new来动态分配内存,使用delete释放内存。如 int *a = new int; delete a;或者 int* a = new int(10); Delete[] a;但要注意的是,delete一个指针后,该指针并没有指向NULL。空指针是指void类型的指针,该指针可以看作面向对象里面的抽象类,任何指针类型...原创 2019-03-09 16:51:38 · 1122 阅读 · 0 评论 -
比较器与桶排序
比较器前面介绍的选择排序、冒泡排序、插入排序、归并排序、堆排序以及快速排序,还有选择排序的变种希尔排序、鸡尾酒排序,这些都是基于比较的排序。对于这些基于比较的排序,可以通过修改比较器,来达到比较其他非基本数据类型的比较。如下图是一个比较器的实现:如果返回一个负数,认为第一个参数应该排在前面;若返回正数,则第二个参数排在前面。所以我们经常可以看到下面的写法:这里实现的是由大到...原创 2019-03-15 08:41:31 · 205 阅读 · 0 评论 -
开放-封闭原则
首先介绍软件设计中的几个原则单一职责原则单一职责模式是指一个类只实现一种功能(仅有一个引起它变化的原因)。如果该类承担的职责过多,相当于将这些功能耦合在一起。那么只要其中一个功能出现错误,就可能会影响其他部分的正常工作。这种耦合会导致脆弱的设计,当发生变化时设计会导致意想不到的破坏。所以只要我们发现一个类的功能不止一个时,就可以将它们拆分以不同的类来实现。事实上软件设计中的许多...原创 2019-03-10 14:24:06 · 142 阅读 · 0 评论 -
装饰模式
装饰模式用于动态地给一个对象添加一些额外的职责,它可以理解为继承的替代方案。就增加功能来说,装饰模式比生成子类更加灵活。比如一家奶茶店,店里的奶茶可以加各种配料,这时应该怎么实现呢?一种方案是先构造一个奶茶抽象类,然后生成各种子类如珍珠奶茶、红豆奶茶、椰果奶茶 ...... ,但事实上一杯奶茶奶茶里可以添加多种配料,比如珍珠野果奶茶,如果店里的配料很多,排列组合之后要生成的子类就更多了,所...原创 2019-03-11 23:36:53 · 87 阅读 · 0 评论