摘要:C/C++的内存机制一:C语言中的内存机制 在C语言中,内存主要分为如下5个存储区: (1)栈(Stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。 (2)堆(Heap):由程序员用malloc/calloc/realloc分配,free释放。如果程序员忘记free了,则会造成内存泄露,程序结束时该片内存会由OS回收。 (3)全局区/静态区(Glo...
阅读全文
摘要:在标准C++中,C++中的位操作类(Bitset)提供一个位集合的数据结构。利用这个结构,可以实现某些很复杂的功能,比如权限设计、游戏中的存档,成绩是否及格等。这个结构的一个优点是能够节省空间(尤其在网络传输的时候,优点就体现出来了),这里模仿<Data Structure for game programers>写了一个类似的位操作类,主要采用长整型数来保存位,两个长整型就能保存64...
阅读全文
摘要:最近在看<Data Structure for Game Programmers>,还是有很多地方值得去学习。这里仿照其中的一维数组类,自己写了一遍,其中还可以增加很多功能,以后再去完善了。 //============================================================================[代码]相关的测试代码如下:#inclu...
阅读全文
摘要:这里判断函数写成了一个模板,比较的类型T需要实现了<操作符操作。这里只测试了整形数组的排序。//ds00.cpp:Definestheentrypointfortheconsoleapplication.[代码]//冒泡排序void BubbleSort(int *arr,int len){ //检测输入参数 assert(arr!=NULL); //判断一轮检测是否有交换 bool cha...
阅读全文
摘要:常见递归方法的实现,注意终结条件和递归过程即可。#include<stdio.h>[代码]
阅读全文
摘要:你觉得下面这段代码的所有输出答案是多少?charca='a'; [代码]另外附一篇文章:原文地址:http://student.csdn.net/space.php?uid=113292&do=blog&id=9029字符串的长度字符串的长度通常是指字符串中包含字符的数目,但有的时候人们需要的是字符串所占字节的数目。常见的获取字符串长度的方法包括如下几种。1.使用sizeof获取...
阅读全文
摘要:下面是采用VS2010中VC++编写的矩阵类,实现了基本的乘法操作,郁闷的是,由于矩阵大小是由构造函数动态分配的内存空间,在实现矩阵乘法时,返回的矩阵对象成了局部堆栈对象,分配的数据指针为NULL,不知各位大虾有什么好的办法没?[代码]
阅读全文
摘要:实现了严蔚敏版数据结构书上的三元组数据结构。头文件Triplet.h的具体代码如下:[代码]实现测试代码如下:[代码]
阅读全文
摘要:C/C++中算法运行时间的三种计算方式算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。而度量一个程序的执行时间通常有两种方法。 事后统计的方法:该方法利用计算机内部的计时功能,可以精确到毫秒级别,这种方法有两个缺点:一是必须依据算法先编写好程序;二是运行程序的软硬件环境易喧宾夺主,掩盖算法本身的优劣。但是有时候在同一台机器上,想对不同算法进行比较或是想知道一个程序究竟需要运行多长时间,该方法就有了用武之地了。本文主要介绍三种事后计算算法运行时间的方式,具体的可以参见源代码,即time_t/time、timeb/ftime、clock/CLOCKS_PER_SEC。 事
阅读全文
摘要:浅议C/C++数据类型转换一、何为数据类型在C语言版的数据结构中我们就学过,数据类型表达了一个值的集合以及定义在这个值集上的一组操作的总称。每一种不同的数据类型都有各自不同的操作从而实现不同的功能。比如在整形int上面就定义了一些列操作+,-,*,/,%等,并且经过计算后结果还是整形(数据类型值的封闭性)。在字符串string上定义了strcat,strcpy等操作,并且返回的也都是字符串。二、为...
阅读全文
摘要:进程的终止方式: 有8种方式使进程终止,其中前5种为正常终止,它们是: 1:从 main 返回 2:调用 exit 3:调用 _exit 或 _Exit 4:最后一个线程从其启动例程返回 5:最后一个线程调用 pthread_exit 异常终止有3种,它们是: 6:调用 abort 7:接到一个信号并终止 8:最后一个线程对取消请求做出响应补充:exit和_exit还有atex...
阅读全文
摘要:转自:http://www.cppblog.com/szhoftuncun/archive/2007/10/28/35356.html为了避免同一个文件被include多次 1#ifndef方式2#pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。方式一: #ifndef __SOMEFILE_H__ #define __SOMEFI...
阅读全文
摘要:七种qsort排序方法<本文中排序都是采用的从小到大排序>一、对int类型数组排序[代码]二、对char类型数组排序(同int类型)[代码]三、对double类型数组排序(特别要注意)[代码]四、对结构体一级排序[代码]五、对结构体二级排序[代码]六、对字符串进行排序[代码]七、计算几何中求凸包的cmp[代码]PS:其中的qsort函数包含在<stdlib.h>的头文件里,...
阅读全文
摘要:/C:在预处理输出中保留注释语句/c:只编译,不连接,相当于在"Build"菜单下选择了"Compile"/D:定义常量和宏,与源程序里的#define 有相同效果/E:预处理C、C++源文件,将源文件中所有的预编译指令及宏展开,将注释去掉,然后将预处理器的输出拷贝至标准输出设备输出,并且在每个文件的开头和末尾加入#line/EH:指定编译器用何种异常处理模型/EP:同/E,只是去掉了#line/...
阅读全文
摘要:这里主要测试了与内存分配和释放有关的几个函数,这几个函数的说明如下:Memory FunctionscallocDeclaration:void *calloc(size_tnitems, size_tsize);Allocates the requested memory and returns a pointer to it. The requested size isnitemseachsi...
阅读全文
摘要:除了强制类型转换和隐士类型转换外,其余的转换函数基本集中在头文件<stdlib.h>中。具体参见代码中的注释,代码中只写了几个函数的测试函数,其余的可类似参考编写。/*[代码]再来一篇字符串转化测试代码:1//作用:测试类型转化函数[代码]
阅读全文
摘要:下面的代码测试了ctype.h中的主要"函数",这里的函数打引号,说明这里的函数不是真正的函数,只是宏定义而已;另外,掌握该头文件的方法是熟记ascii码表。[代码]新的测试文件:1//作用:测试<cctype>中的相关字符测试函数[代码]
阅读全文