
C/C++
文章平均质量分 68
nitghost
走在编程的路上
展开
-
从unsigned char * 转换成int,long... 类型
从unsigned char * 转换成int,long... 类型//使用c++ unsigned char ps[128];long *VendorID = reinterpret_castlong *>(ps);//从int type to unsigned char * int VID1= 0x58F;int ii=0;int size_int=0原创 2009-01-05 10:23:00 · 3213 阅读 · 0 评论 -
OPENGL_材质
<br />材质(Textures)<br /> 当我要画一个图片,<br /> 先获得一个材质id,bind材质,设置纹理参数,read图片数据,转成opengl识别的数据格式,如rgba等,<br /> 把数据和id绑定。这个时候在draw里面就可以提取出材质根据id,然后就可以画这个材质了.<br /> load过程:<br /> NSString * str = [[NSBundle mainBundle] pathForResource:@"Lo原创 2010-10-13 15:11:00 · 629 阅读 · 0 评论 -
整数的质因数分解算法
<br />整数的质因数分解算法:<br />#include<stdio.h>#include<math.h>#include<conio.h> void f(int num){ bool flag; for (int i = int(sqrt((double)num));i>1;i--) { if((num%i)==0) flag= false; } if(!flag) { for (int i = int(sqrt(n原创 2010-10-11 16:22:00 · 1040 阅读 · 0 评论 -
struct 中定义方法例子
<br />在头文件中定义<br />/// An axis aligned bounding box.struct b2AABB{ /// Verify that the bounds are sorted. bool IsValid() const; /// Get the center of the AABB. b2Vec2 GetCenter() const { return 0.5f * (lowerBound + upperBound); } /// G原创 2010-10-12 13:46:00 · 1697 阅读 · 0 评论 -
开放定址法解决hash冲突(C语言)
<br />/* * hashquad.c 开放定址法解决hash冲突问题 */#include <stdio.h>#include <stdlib.h>#include "hashquad.h"#include "fatal.h"#define MIN_TABLE_SIZE (10)#define REHASH_FACTOR (0.7)enum kind_of_entry { legitimate, empty, deleted };struct hash_e转载 2010-10-11 16:25:00 · 1086 阅读 · 0 评论 -
重写printf
<br /> <br />int _wsfprintf(const char * plog, ...){ int nret = 0;#ifdef DEBUG if (plog == NULL) { return nret; } va_list args; va_start(args, plog); nret = printf(plog, args); //printf(); va_end(args);#endif return nret;} <br原创 2010-10-22 09:52:00 · 3083 阅读 · 0 评论 -
STL中list的使用
STL中list的使用:STL中的list就是一双向链表,可高效地进行插入删除元素。现总结一下它的操作。文中所用到两个list对象c1,c2分别有元素c1(10,20,30) c2(40,50,60)。还有一个list::iterator citer用来指向c1或c2元素。list对象的声明构造():A. listc0; //空链表B. listc1(3); //建一个含三个默认值是0的元素的链表C.转载 2010-12-25 02:32:00 · 462 阅读 · 0 评论 -
C语言位操作(转)
<br /><br />C语言位操作(转)<br />在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变 换使用,但是,灵活的位操作可以有效地提高程序运行的效率。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。<br /> 位运算符C语言提供了六种位运算符:<br /> & 按位与<br /> | 按位或<br /> ^ 按位异或<br /> ~ 取反<br /> << 左移<br转载 2010-11-16 16:29:00 · 1639 阅读 · 0 评论 -
Git for mac os x
<br />由于客户使用git管理源代码,以前一直用cvs和svn,感觉很方便。在mac上git也有ui客户端,不过很不好用,还好使用命令方式也很简单。下面是常用的命令:<br /> <br />login:<br />ssh zzccd@ctlab ->回车需要输入帐号,这个使用就登录了。常用的命令都可用。<br />pwd 返回当前路径<br />logoutexit<br /> <br />提交代码:<br />进入提交目录,如果需要全部提交 "git add ." 或者“git add <fi原创 2011-01-23 15:38:00 · 2104 阅读 · 0 评论 -
PThread编程手册
<br />int pthread_create(<br /> pthread_t *tid,<br /> const pthread_attr_t *attr,<br /> void*(*start_routine)(void*),<br /> void *arg<br /> );<br />//参数tid 用于返回新创建线程的线程号;<br />//start_ro转载 2011-02-14 15:23:00 · 690 阅读 · 0 评论 -
优化C语言代码(程序员必读)
<br />1、选择合适的算法和数据结构<br /> 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分紧密的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编转载 2011-02-14 14:11:00 · 683 阅读 · 0 评论 -
如何写format函数
<br />FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);<br />FOUNDATION_EXPORT void NSLogv(NSString *format, va_list args) NS_FORMAT_FUNCTION(1,0);<br /> <br />EG1:<br />VSLog(char* format, ...)<br />{<br /> char pbuffer[204原创 2010-10-13 14:59:00 · 1616 阅读 · 0 评论 -
散列表(哈希表)工作原理
<br />1. 引言 <br /> 哈希表(Hash Table)的应用近两年才在NOI中出现,作为一种高效的数据结构,它正在竞赛中发挥着越来越重要的作用。 <br />哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。 <br /> 哈希表又叫做散列表,分为“开散列” 和“闭散列”。考虑到竞赛时多数人通常原创 2010-10-11 16:29:00 · 703 阅读 · 0 评论 -
BMP文件结构
一、BMP文件结构 ---- 1. BMP文件组成 ---- BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 ---- 2. BMP文件头 ---- BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 ---- 其结构定义如下:原创 2009-01-06 14:50:00 · 639 阅读 · 0 评论 -
在cocoa中使用C++STL 链表
在cocoa中使用C++STL 链表1>.把“*.m”文件重命名为“*.mm”。2>.在.mm文件中包含头文件:#include using namespace std;3>.定义结构typedef struct MSUsb_mountInfo{ char cVolumePath[MAX_CHARLEN];原创 2009-01-05 10:12:00 · 1396 阅读 · 0 评论 -
converting unsigned char * to unsigned char**
void far *Buffer ;unsigned char *I ; //Note I is different than Bufferunsigned char **arr; //read from filefread((void *)Buffer, (size_t)1, (size_t)ImageSize, file_ptr); //Make I Point原创 2009-02-20 14:00:00 · 859 阅读 · 0 评论 -
bitmap convert to RGB565 display
bitmap图片是一个RGB888,每个像素由3个字节组成,R->8bit,G->8bit,B->8bit; RGB565 的每个pixels是由2字节组成,R->5bit,G->6bit,B->5bit。转换的思路是取出原图的点,对没个采样进行运算。#define RGB565_MASK_RED 0xF800#define RGB565_MASK_GREEN原创 2009-02-23 09:28:00 · 4945 阅读 · 2 评论 -
rgb888 to rgb565 application source code
bitmap convert to rgb application... source code: #include #include #pragma pack(2) /*2 byte packing */typedef struct{unsigned short int type;unsigned int size;unsigned short int原创 2009-02-23 09:47:00 · 5659 阅读 · 2 评论 -
C++宏
C++提供的编译预处理功能主要有以下三种: (一) 宏定义 (二) 文件包含 (三) 条件编译在C++中,我们一般用const定义符号常量。很显然,用const定义常量比用define定义常量更好。 在使用宏定义时应注意的是: (a) 在书写#define 命令时,注意和之间用空格分开,而不是用等号连接。 (b) 使用#define定义的标识符不是变量,原创 2009-03-06 09:23:00 · 1232 阅读 · 0 评论 -
Dynamic loading
From Wikipedia, the free encyclopediaJump to: navigation, searchDynamic loading is a mechanism by which a computer program can, at runtime, load a library (or other binary) into memory, retri转载 2009-03-20 14:26:00 · 1342 阅读 · 1 评论 -
Atomicity(原子性),visibility(可被观察性),volatility(挥发性)
一、Atomicity(原子性)定义:atomic操作是指一个不会被thread scheduler打断的操作箴言:1.除非你是多线程【专家】,否则不要使用atomicity来代替synchronization2.有时候,即使一些操作看上去是atomicity,但实际上它可能并不是3.任何对去掉synchronization的尝试,通常是不成熟优化的信号,并带来许多麻烦应用:1.atomici转载 2009-03-20 14:40:00 · 758 阅读 · 0 评论 -
C++拷贝构造函数深入分析以及重写operator =
class CTestCopyConstruct { public : CTestCopyConstruct() { TRACE( " Enter CTestCopyConstruct();this is %d/n " , this ); strTest = " not ok " ; i = 0 ;转载 2009-03-23 12:28:00 · 1720 阅读 · 0 评论 -
DLL的链接方式
应用程序导入函数与DLL文件中的导出函数进行链接有两种方式:隐式链接和显式链接。所谓的隐式链接是指在应用程序中不需指明DLL文件的实际存储路径,程序员不需关心DLL文件的实际装载。而显式链接与此相反。 采用隐式链接方式,程序员在建立一个DLL文件时,链接程序会自动生成一个与之对应的LIB导入文件。该文件包含了每一个DLL导出函数的符号名和可选的标识号,但是并不含有实际的代码。LIB文件作为D原创 2009-04-10 12:15:00 · 848 阅读 · 0 评论 -
char ,unsigned char与 WCHAR
//把unsigned char 转成一个 char 字符char BinToCh(unsigned char bin){ if (bin >= 0 && bin else if (bin >= 10 && bin else ASSERT(FALSE); return 0;} //unsigned char 转为 charvoid BinTo2ChA(unsig原创 2009-06-12 11:02:00 · 969 阅读 · 0 评论 -
函数中堆内存写越界问题
在一个函数调用时候,分配一个堆,在堆的最底层应该是这个函数的返回指针(就是调用的如口,执行完这个函数后要往下执行的地址)如后才是函数参数的入栈过程,C和C++的在函数前的修饰符决定了参数的入栈顺序。在一个函数中定义一个常量数组。 WCHAR pwText[16]; WCHAR *pc = L"1111122222222222222222211111111111111111111111122原创 2009-06-12 16:06:00 · 1146 阅读 · 0 评论 -
(转)堆栈与函数调用
一 C++程序内存分配1) 在栈上创建。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。 2) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete来释放内存。动态内存的生存期由程转载 2009-06-12 16:31:00 · 639 阅读 · 0 评论 -
求一个整数的二进制最高位
<br />求十进制整数的最高位非常简单,那计算机如何求一个整数的二进制最高位?<br /><br />众所周知,计算是通过01二进制来表示世界的,自然整数也是使用二进制存储在计算机硬盘中。那如何求一个整数的二进制最高位的位置?<br /><br />首先我们看看下面两个简单的例子,再来讲解如何求解的过程。<br />eg 1:<br />十进制整数表示: 8<br />二进制整数表示:1000<br /><br />很明显的,由十进制整数8的二进制表示形式可知,十进制整数8的二进制最高位是第4位。<br转载 2011-03-23 13:42:00 · 13041 阅读 · 0 评论