- 博客(181)
- 资源 (6)
- 收藏
- 关注
转载 memset ,memcpy 和strcpy 的根本区别?
Memset memest原型 (please type "man memset" in your shell) void *memset(void *s, int c, size_t n); s:指向的内存地址c:内容n:大小
2011-08-20 16:50:53 929
转载 自己写的 string 类
现在很多面试题都是要求写一个String类,主要检查Big 3,也就是主要检查构造函数,析构函数和赋值函数.(不要告诉我你以为是:姚明,麦蒂,阿泰...),这也是很考验基本功的一个题目.我今天自己写了一个MyString类,顺便加上了StrAdd函数用于字符串相加,Get函数用于
2011-08-20 16:34:09 1091
转载 堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap)
2011-08-18 20:03:15 515
转载 关于static
简介 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。面向过程设计中的static 1、静态全局变量 在全局变量前,加上
2011-08-18 20:00:57 549
转载 二叉树三种遍历的非递归算法
1.先序遍历非递归算法#define maxsize 100typedef struct{ Bitree Elem[maxsize]; int top;}SqStack;void PreOrderUnrec(Bitree t){ SqStac
2011-08-17 21:25:06 854
转载 归并排序
归并排序 归并排序 (merge sort) 是一类与插入排序、交换排序、选择排序不同的另一种排序方法。归并的含义是将两个或两个以上的有序表合并成一个新的有序表。归并排序有多路归并排序、两路归并排序 , 可用于内排序,也可以用于外排序。这里仅对内排序的两路归并方法进行讨论
2011-08-17 20:51:22 485
转载 关于public private protecetd
访问控制:public修饰的成员变量 在程序的任何地方都可以被访问,就是公共变量的意思,不需要通过成员函数就可以由类的实例直接访问private修饰的成员变量 只有类内可直接访问,私有的,类的实例要通过成员函数才可以访问,这个可以起到信息隐藏protected
2011-08-17 20:44:44 958
转载 图的邻接表存储 深度优先遍历 广度优先遍历 C语言实现
ALGraph.hview plain#pragma once #include "Queue.h" /************************************************************
2011-08-17 15:41:20 14632
转载 电梯调度算法
编程之美------电梯调度算法2011-06-02 15:24一座大厦一共有6部电梯。在高峰时间,每层都有人上下,电梯在每层都停。实习生小飞常常会被每层都停的电梯弄得很不耐烦,于是他提出了这样的一个办法:由于楼层并不太高,那么在繁忙的上下班时
2011-08-17 14:52:03 11473 3
转载 各种排序算法的稳定性和时间复杂度小结
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒 泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂
2011-08-17 14:28:11 1168
转载 折半查找(二分查找)
折半查找又叫二分查找,要求查找表本身必须是有序的。查找算法复杂度为O(logn)。C标准库提供折半查找的库函数,声明如下bsearch(const void *, const void *, size_t, size_t, int (__cdecl *)(const vo
2011-08-17 11:32:51 1454
转载 程序员面试宝典笔记4--C++
1.返回值为比较大对象,如果按值传递返回的话,需要创建新对象,开销较大,因而返回引用; 2.但函数不希望所返回的对象被调用者修改,因此给返回的引用加上const修饰,以确保不被修改。隐藏
2011-08-17 10:01:56 876
转载 选择类排序
简单选择排序 简单选择排序(simple selection sort)也是直接选择排序。此方法在一些高级语言课程中做过介绍,是一种较为容易理解的方法。1.算法思想 对于一组关键字{K1,K2,…,Kn}, 首先从K1,K2,…,Kn中选择最小值,假如它是 Kz
2011-08-16 20:19:59 925
转载 程序员面试宝典笔记3--循环递归概率
#includeusing namespace std;int sum=0;int SCORE=90;void compute(int num,int scores){if(numSCORE)return;if(num==1)
2011-08-16 19:36:44 822
转载 sizeof 类
虚继承的话,在子类末尾要多一份指向基类的指针;只保留一份,多的要减去如果子类重新定义了虚函数,那么它不放在基类的虚表里面,而是单独重新开一份虚表,这个和非虚继承是不同的------------------------------------------------
2011-08-15 11:28:23 874
转载 程序员面试宝典笔记1--基础知识
----内容引自《程序员面试宝典》 这本书好像错误蛮多的..1.求x的值int main(){int x=2,y,z;x *= (y=z=5); // x = 2*5x==(y=z); // z赋值给y,然后判断y是否与x相
2011-08-13 22:03:22 1008
转载 《C语言深度剖析》电子版4.1.5小节的错误
最近在朋友的推荐下读了《C语言深度剖析》(电子版),虽然这本书讲的知识点在《C程序设计语言》《C专家编程》《C的陷阱和缺陷》这三本书中都有,但是作者把这些知识点提炼到100多页的书中,而且讲得层层递进,逻辑性很好,确实让人钦佩!感谢作者免费在网上共享此书的电子版。
2011-08-13 10:04:59 827
转载 《c语言深度剖析》笔记4
1.这条栓“野指针”的链子就是这个“NULL”。定义指针变量的同时最好初始化为NULL,用完指针之后也将指针变量的值设置为NULL。也就是说除了在使用时,别的时间都把指针“栓”到0 地址处。这样它就老实了。对于程序员,一般来说,我们可以简单的理解为内存分为三个
2011-08-11 21:31:03 839
转载 《c语言深度剖析》笔记3
1.先看下面的例子:int *p;现在用sizeof 测试一下(32 位系统):sizeof(p)的值为4。嗯,这说明咔出p的这个模子大小为4个byte。显然,这个模子不是“int”,虽然它大小也为4。既然不是“int”那就一定是“int *”了。好,那现在我们可
2011-08-11 10:50:08 1346
转载 《c语言深度剖析》笔记2
1.y = x/*p,这是表示x 除以p 指向的内存里的值,把结果赋值为y?我们可以在编译器上测试一下,编译器提示出错。实际上,编译器把/*当作是一段注释的开始,把/*后面的内容都当作注释内容,直到出现*/为止。这个表达式其实只是表示把x 的值赋给y,/*后面的内
2011-08-10 11:01:50 1643
转载 typedef和define 的区别
Typedef和define都可以用来给对象取一个别名,但是两者却有着很大不同。1. 首先,二者执行时间不同关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能。Define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单
2011-08-09 21:36:01 470
转载 原码 补码 反码
在计算机内,定点数有3种表示法:原码、反码和补码所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码
2011-08-09 11:06:17 882
转载 《c语言深度剖析》笔记1
1.break 跳出当前循环 ,continue 结束当前循环,开始下一轮循环break 关键字很重要,表示终止本层循环。现在这个例子只有一层循环,当代码执行到break 时,循环便终止。如果把break 换成continue 会是什么样子呢?continue 表
2011-08-08 21:58:35 1978 2
转载 c++代理类
想必大家都知道在浏览器中设置代理吧!??其实代理模式跟这个差不多,对象A(相当于浏览器)不是直接访问对象C(相当Web服务器),而是通过一个中间对象B(相当于代理服务器)间接访问对象C。对象B则可以利用这一有利位置为A提供一个与C完全不同的接口,或做一些C本来不做的事!流程如
2011-08-08 16:53:52 1397 3
转载 交换类排序
交换排序 交换排序主要是根据记录的关键字的大小,将记录交换来进行排序的。交换排序的特点是:将关键字值较大的记录向序列的后部移动,关键字较小的记录向前移动。这里介绍两种交换排序方法,它们是冒泡排序和快速排序。冒泡排序 将被排序的记录数组R[1..n]垂直排列
2011-08-07 22:18:23 964
转载 插入类排序
直接插入排序 1.定义 直接插入排序( straight insertion sort )是一种最简单的排序方法。它的基本操作是将一个记录插入到一个长度为 m (假设)的有序表中,使之仍保持有序,从而得到一个新的长度为 m + 1 的有序表。2.算法思路
2011-08-07 19:58:44 794
转载 进程线程的区别
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的
2011-08-07 19:06:18 471
转载 C++中变量的作用域与生命周期
今天在论坛上看到有朋友发帖问道:既然静态全局变量与全局变量都存储在全局数据区,为什么作用域却不一样呢?也许答案非常简单:C++就是这么规定的,静态全局变量与全局变量的唯一区别就是作用域不同。 对一个C++变量来说,有两个属性非常重要:作用域和生命周期,它们从两个不同的
2011-08-07 10:36:35 683
转载 C++内存对象大会战2
四.禁止产生堆对象 上面已经提到,你决定禁止产生某种类型的堆对象,这时你可以自己创建一个资源封装类,该类对象只能在栈中产生,这样就能在异常的情况下自动释放封装的资源。 那么怎样禁止产生堆对象了?我们已经知道,产生堆对象的唯一方法是使用new操作,如果我们禁止
2011-08-06 18:29:23 418
转载 C++内存对象大会战1
如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛。用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性能,更为主要的是,当我们操作内存的时候一不小心就会出现问题,而且很多时候,这些问题都是不易发觉的,比如内存泄
2011-08-06 18:28:49 433
转载 android activity 生命周期
一:Activity的生命周期方法 Android提供了很多Activity的生命周期方法,比如我们常用的onCreate、onPause、onResume等。这里主要介绍粗粒度的周期方法,诸如onPostCreate、onPostResume等这些细粒度的周期方法可
2011-07-31 15:00:09 523
转载 Android 中Message,MessageQueue,Looper,Handler详解+实例<转>
一、几个关键概念 1、MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方。每一个线程最多只可以拥有一个MessageQueue数据结构。 创建一个线程的时候,并不会自动创建其MessageQueue。通常使用一个Looper对象对该线程的Mess
2011-07-28 14:36:33 484
转载 Gallery of Processor Cache Effects
Most of my readers will understand that cache is a fast but small type of memory that stores recently accessed memory locations. This descr
2011-07-18 16:16:50 850
转载 Const,Const函数,Const变量,函数后面的Const
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不
2011-07-18 14:34:31 509
转载 二维数组和指针
二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一
2011-07-18 09:28:47 1157
转载 【转】c++临时对象与const
C++临时对象的生命周期有关临时对象的生命周期有三种情况:1)一般情况:临时性对象的被摧毁,应该是对完整表达式(full-expression)求值过程中的最后一个步骤。该完整表达式造成临时对象的产生与消亡。例:#include using namespa
2011-07-15 16:39:11 653
转载 默认构造函数
代码一:复制内容到剪贴板程序代码#include using namespace std;class AA{};int main(){ AA *a=new AA(); return 0;}
2011-07-14 15:38:28 768
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人