02 2016 档案
摘要:队列是一种特殊的线性表,与堆、栈有点类似,但是队列值允许从队列的前端(Front)进行出队(删除),队列的后端进行插入(进队)。 实际的应用中,使用的是循环的队列。 循环队列的本质:是一个数组,只不过这个数组是可以被循环地进行存放数据。 2、循环队列的创建 typedef struct Queue { int *pBase; int Front; ...
阅读全文
摘要:1、顺序排序:数组内部做排序 第一个和第二个做比对,第一个和第三个多比对,第一个和第四个做比对,以此类推。 //顺序排序 void sort_xunxu(int * a,int n) {// a 数组地址,n: 数组的长度 int i, j; int tmp = NULL; for (i = 0; i a[j]) ...
阅读全文
摘要:1、二分法的查找 一般而言,二分法是在数组当中,且数组的内部也是已经做好了从大到小或者从小到大的排序了,我们需要在这些排序中找到我们需要的数值。 int binart(int *a, int key, int n) { int left = 0, right = n - 1,mid = 0; mid = (left + right) / 2; wh...
阅读全文
摘要:1、野指针 野指针是指向了“垃圾”内存的指着。 2、产生原因 (1)指针变量没有被初始化。任何指针变量刚刚被创建的时候,是不会自动变成NULL指针的,他的缺省值是随机的,这个时候指针是乱指的。所以指针变量在被创建的同时应该被初始化,让指针指向合法的内存。 (2)指针P被free或者delect之后,没有设置为NULL;当指着被free之后,其...
阅读全文
摘要:1、线程 之所以还要多线程编程的原因: 进程的缺点: (1)多进程浪费资源 创建一个进程,就必须分配给独立的地址空间,建立 N 多的代码段,数据段,非常的昂贵的多任务的工作方式。而线程则来着节约。 (2)进程之间通信不便 进程之间通信要涉及到:管道、信号、信号量、消息队列、共享内存、套接字。这些都是过于麻烦。线程在同一个进程之内,数据都是共享的, (3)多进...
阅读全文
摘要:对于非常简单的scanf函数,一直使用,但是却是有很多的知识点没有掌握好,现总结如下: 1、多个scanf之后,后序以 scanf("%c",&c) 当程序连续调用scanf 函数的,前面的获得输入接收的时候,一般结束都是以一个空白字符(空格、enter),比如enter 结束输入;但是,当后面接着是还有一个以 scanf("%c",&a) 的时候,则上面输出 enter 作为结束...
阅读全文
摘要:1、多态 多态是通过虚函数来实现的,也就是说虚函数是允许子类重新定义成员函数,而子类通过定义和父类一样的函数的方法,被成为覆盖或者是重写。 多态的作用,使得代码可以重用,代码模块化; 函数重写: (1)子类定义的函数与父类原型相同的函数 (2)函数的重写只有发生在父类和子类之间 class Parent { public: ...
阅读全文
摘要:1.继承 儿子继承父亲的遗产,儿子拥有父亲所有的成员变量和成员函数。儿子也可以拥有父亲没有的成员变量和成员函数。 子类与父类继承的关系, 也就是说: (1)子类拥有父类所有的成员变量和成员函数(除了构造函数和析构函数)。 (2)子类的对象可以当作父类的对象使用(认为子类是特殊的一个父类) (3)子类可以用父类没有的成员...
阅读全文
摘要:1.基本 输入和输出 cout > x; cout > 左移和右移,居然实现了输入输出的例子,所以说左移和右移的运算符是被重载的,在不同的上下文,操作符有不同的功能; C++操作符的重载:operator + 运算符 struct Complex { int a; int b; }; // 操作符的重载 Complex operator+ (Complex &c1...
阅读全文
摘要:问题: 如何统计对象的个数呢? (1)普通的成员变量?不行,因为对于普通的成员变量,对象都有各自的成员变量,他们都是相互独立的,所以并不能实现对象个数的统计 (2)全局变量:可以,但是一般来说,我们都是尽量避免全局变量(周期长,占内存,出错的时候, 不易查找), (3)类的静态成员变量和静态成员函数: YES 静态成员: (1)静态成员是属于整个...
阅读全文
摘要:1.基本的概念 类,指的是莫一类的事物的概括,是一个抽象的 对象:指的是某一类里面的一个实体,是具体的 类: 通常包含了属性和行为。属性:被描述类的静态的特征,老虎的颜色、体重等静态的属性;行为:描述类的动态特征,比如跑 类的继承: 继承之后的类,继承了原先的类的所有的属性和行为;继承之后的类,也可以有自己特有的属性和行为: ...
阅读全文
摘要:C++ 添加了一些全新的关键字。 1、new new 来进行动态内存的分配,而delect 则是进行内存的释放, 申请的方式: 变量申请:int *p = new int; // 申请开辟一块四个字节的内存空间,一个 int 型的空间 delect p; // 删除的是变量 数组申请:int *p = new int[5] // 开辟一个大小为 5个 的整型的...
阅读全文
摘要:1、内联函数 define 可以定义宏代码片段,但是,C++ 推荐使用内联函数替代宏代码片段。 inline int f(int a, int b) { } 只需要在 函数定义(实现)的前面添加 inline 关键字。内联函数的出现是为了替代宏代码的片段 定义: 内联函数,其实就会将内联函数的内部直接插入到被调用的地方,所以就没有了,调用子函数...
阅读全文
摘要:1、C语言的缺点 (1)重用性差 (2)维护性差 2、C++ 从面向世界的需求出发来设计我们的程序, 3. 使用增强 A.for (int i = 0; i < 10; i++) { } C语言编译器的话,会报错,因为C语言认为,变量需要先定义,后面再时候,而C++的编译器则是可以边定义边使用。 B、 C语言编译器 : 可以重复定义变量,但是C++则不允许。 ...
阅读全文
摘要:C/C++ 中的词法分析中的理解。如,/、=、和*只有一个符号,称之为单字符的符号,那么对于多个字符数的符号,比如,/*、和 ==包含了两个的单字符,所以称之为多字符符号。 所以,在编译器录入字符的时候,每录入一个字符,比如 / 之后就会做出判断是否已经录入完毕,如果 后面还有 *,就会合在一起组成一个多字符,重新判断是否已经录入完毕;否则 是当作录入一个字符进行处理。...
阅读全文
摘要:C语言的学习中,学习到有符号数和无符号数,通过代码确定一个变量是属于有符号数还是无符号数 1、有符号数 有符号数是对于二进制而言的,最最高的为表示符号位,“0”表示正值,“1”表示负值,剩下的位表示数值。也就是说,有符号数的本质特征是,可以出现负值的情况 2、无符号数 无符号数是相对于有符号数的,数的二进制全部表示数值,没有正负之分。所以,无符号数的本质特征...
阅读全文
浙公网安备 33010602011771号