C++
文章平均质量分 72
Yangping_Peng
这个作者很懒,什么都没留下…
展开
-
函数的工作原理
函数调用的工作流程 传递参数:通过栈(_cdecl,_stdcall)或寄存器(_fastcall)。函数调用:使用call指令调用函数,并将返回地址压入栈中。保存栈底:将调用方的栈底寄存器ebp压栈。申请栈空间,并保存寄存器环境:根据局部变量的多少提升esp(add esp,n)来开辟栈空间,用于存放函数的局部变量(VC6.0中debug模式这部分空间初始化为0XCC),并将函数中要用到的原创 2013-04-02 09:53:34 · 1087 阅读 · 0 评论 -
结构体和类
结构体和类 在C++中,结构体和类惟一的区别是默认访问权限和默认继承访问级别不同。结构体的默认访问权限为public,派生类默认为public继承;而类的默认访问权限为private,派生类默认为private继承。它们都具有构造函数、析构函数和成员函数。它们都是抽象的概念,只能表示某个群体,无法确定这个群体中的某个独立个体;而对象则是群体中独立存在的个体。对象 对象的大小原创 2013-04-16 20:51:31 · 826 阅读 · 0 评论 -
字符数组、字符指针;sizeof、strlen
对于字符数组与字符指针:1. 以字符串形式出现的,编译器都会为该字符串自动添加一个'\0'作为结束符(ASCII码为0x00),如在代码中写"abc",那么编译器存储的是"abc\0"。2. 字符串字面值作为字符指针的初始值 "hello"是一个字符串字面值,编译器将其作为const char*处理,与之相关联的内存空间位于内存的只读部分,即允许编译器重用指向等价字符串直接量的转载 2013-04-18 11:55:44 · 916 阅读 · 0 评论 -
二叉树
1. 定义二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。二叉树的5中基本形态: 满二叉树:一棵深度为k且有2k-1个结点的二又树称为满二叉树,每一层上的结点数都达到最大值。完全二叉树:若一棵二叉树至多只有最下面的两层上结点的度数可以小于2,并且最下原创 2014-06-28 11:27:18 · 644 阅读 · 0 评论 -
二叉查找树
1. 引入以顺序表作为存储结构的查找算法中,二分查找效率最高。但二分查找要求表按关键字有序,且不能用链表作存储结构,因此,当表的插入或删除操作频繁时,为维护表的有序性,势必要移动表中很多结点。这种由移动结点引起的额外时间开销,就会抵消二分查找的优点。也就是说,二分查找只适用于静态查找表。若要进行高效率的查找与删除操作,可采用动态查找表作为存储结构,如二叉查找树(Binary Search Tr原创 2014-06-27 15:52:09 · 853 阅读 · 0 评论 -
插入排序
1. 问题描述2. 算法思想 将待排序数据序列分成已序部分sorted和未排序部分unsorted。每迭代一次,将unsorted中的一个元素key插入到sorted中。迭代结束时,即完成了对输入序列的排序。此思想类似打扑克牌时摸牌阶段。 3. 伪代码实现4. C++实现 4. 算法复杂度分析时间复杂度:原创 2014-04-01 21:48:37 · 581 阅读 · 0 评论 -
希尔排序
1. 问题描述2. 算法思想 将待排序数据分成已排序部分sorted和未排序部分unsorted。插入表示的是将未排序部分unsorted中一个数据key插入到已排序的数据sorted当中。假设数据的个数为 N,初始时将第一个数据作为已排序部分,剩下的 N-1 个数据作为未排序部分。如此,总共执行 N-1 次插入,便可完成对输入数据的排序。 此思原创 2014-06-26 21:03:43 · 581 阅读 · 0 评论