C/C++程序设计
文章平均质量分 56
summer_grass
这个作者很懒,什么都没留下…
展开
-
头文件中的ifndef/define/endif的作用
防止该头文件被重复引用 标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h #define _STDIO_H_ 例子: /* Define _CRTIMP */ #ifndef _CRTIMP#ifdef _DLL#define _CRTIMP __declspec(dllimport)#else原创 2008-09-02 10:44:00 · 3083 阅读 · 0 评论 -
静态链接库LIB和动态链接库DLL的区别
静态库就是将需要的代码直接链接进可执行程序;动态库就是在需要调用其中的函数时,根据函数映射表找到该函数然后调入堆栈执行。如果在当前工程中有多处对dll文件中同一个函数的调用,那么执行时,这个函数只会留下一份拷贝。但是如果有多处对lib文件中同一个函数的调用,那么执行时,该函数将在当前程序的执行空间里留下多份拷贝,而且是一处调用就产生一份拷贝。 做成的lib文件本身比较大,但不必附带dll;做成转载 2008-09-02 13:00:00 · 1166 阅读 · 0 评论 -
用atexit()处理C/C++程序的退出
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit()结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就是用atexit()函数来注册程序正常终止时要被调用的函数。 atexit()函数的参数是转载 2008-09-02 09:27:00 · 1300 阅读 · 0 评论 -
编译时的内存分配
程序在编译的时候占用的内存分为以下几个部分: 1 、栈区( stack )— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.2 、堆区( heap )— 亦称动态内存分配.程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放转载 2008-09-08 18:18:00 · 892 阅读 · 0 评论 -
快速排序Qsort--C语言版
快速排序(quicksort)是分治法的典型例子,它的主要思想是将一个待排序的数组以数组的某一个元素X为轴,使这个轴的左侧元素都比X小,而右侧元素都比X大(从小到大排序)。然后以这个X在变换后数组的位置i分为左右两个子数组,再分别进行快速排序,直到子数组中只有一个元素为止。 分治法将原有问题分解成若干个规模更小、但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合成原创 2008-10-06 16:22:00 · 496 阅读 · 0 评论 -
冒泡排序
交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 具体做法: 将待排序的数组array[0...n-1]垂直排列,每个数组元素都是有重量的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描整个数组,两两进行比较,如果有轻气泡在下,则进行交原创 2008-10-07 11:31:00 · 403 阅读 · 0 评论