随笔分类 -  c++

摘要:在消息循环中加下面代码case WM_ERASEBKGND: break; 阅读全文
posted @ 2012-12-16 04:17 fff8965 阅读(188) 评论(0) 推荐(0)
摘要:#pragma comment(lib,"d2d1.lib")加上面的代码。或者项目上右键->properties->linker->Input->Additional Dependencies 阅读全文
posted @ 2012-12-16 04:03 fff8965 阅读(246) 评论(1) 推荐(0)
摘要:进程空间http://blog.csdn.net/yeming81/archive/2008/01/16/2046193.aspx内存状态查询http://blog.csdn.net/yeming81/archive/2008/01/16/2046207.aspx虚拟内存http://blog.csdn.net/yeming81/archive/2008/01/17/2047879.aspx内存映射文件http://blog.csdn.net/yeming81/archive/2008/01/18/2050521.aspx堆http://blog.csdn.net/yeming81/archi 阅读全文
posted @ 2012-12-14 15:26 fff8965 阅读(176) 评论(0) 推荐(0)
摘要:c++的创建对象和java区别很大,java里所有的复杂类型(如 类实例)都是分配到堆中的,而c++则更灵活,所有的变量,不管什么类型,都可以自己指定分配到堆中还是栈中。分配到栈中的写法:Class object("param");//即声明又定义,调用默认构造函数 相当于Class object = Class("param");object = Class("param");//重新创建分配到堆中的写法:Class *p ;//声明p = &new Class();//定义把变量分配到栈中和堆中都有各自的好处,要看情况而定 阅读全文
posted @ 2012-12-14 14:06 fff8965 阅读(272) 评论(0) 推荐(0)
摘要:在用vs写win32的c++程序时是没有命令行的,所以printf是不能用的。但是调试的时候可以调用函数OutputDebugString来想vs的“输出”窗口里输出调试内容。像java中的System.out.println一样往IDE的调试窗口里输出信息。OutputDebugString只接受字符串指针,如果要输出其他格式,如int型,可以用sprintf把字符转成字符串,在传给OutputDebugString。例子: char chInput[512] ; sprintf(chInput,"int:%d\n",500); OutputDebugString( ch 阅读全文
posted @ 2012-12-14 10:06 fff8965 阅读(16804) 评论(0) 推荐(0)
摘要:转自:http://wjl4926.blog.163.com/blog/static/97330204201022655940987/sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以"%"开头的格式说明符(format specifications)来占据一个位置,在后边 阅读全文
posted @ 2012-12-14 09:58 fff8965 阅读(999) 评论(0) 推荐(0)
摘要:转自:http://blog.chinaunix.net/uid-21254310-id-1828938.html一. 何谓可变参数int printf( const char* format, ...); 这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format和可变参数(用”…”表示). 而我们又可以用各种方式来调用printf,如:printf( "%d ",value); printf( "%s ",str); printf( "the number is %d ,string is:%s " 阅读全文
posted @ 2012-12-14 09:48 fff8965 阅读(287) 评论(0) 推荐(0)
摘要:转自:http://blog.chinaunix.net/uid-21254310-id-1828938.htmlvolatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。以上两种情况的区别在于被编 阅读全文
posted @ 2012-12-14 09:47 fff8965 阅读(178) 评论(0) 推荐(0)
摘要:原文:http://blog.csdn.net/wojiushiwo987/article/details/8280478 阅读全文
posted @ 2012-12-11 16:10 fff8965 阅读(136) 评论(0) 推荐(0)
摘要:转自:http://wugang2126.blog.51cto.com/329386/831041简单来说,程序是由一个cpp构成的,而这些独立的cpp最终构成的是一个树型或网型结构的整体程序,将这些独立的cpp连接到一起的就是.h文件,在一个cpp的实现中要用到一个类库或者另一个cpp中实现的函数,那就要#include这个cpp对应的头文件。这样是告诉编译器,你调用的函数是什么样的,多少个参数,之后会对应cpp生成obj文件,在将这些obj文件根据cpp里的#include .h连接到一起。总结:感觉c语言比java麻烦不少,毕竟c语言是为了获得性能,比较接近机器的思维习惯的,而java则 阅读全文
posted @ 2012-12-11 15:35 fff8965 阅读(994) 评论(0) 推荐(0)
摘要:在c++中时不支持变量作为数组长度参数的,如 int n=10;byte bs[n]; 这样写会提示编译错误”表达式必须含有常量值“。虽然用变量声明数组大小会报编译错误,但是可以通过指针来动态申请空间实现动数组长度的变量赋值,写法如下:1 int length = 10;2 int * varArray;3 varArray = new int[length];这样varArray就可以当做数组来用了,这个数组的长度可以在程序运行时由计算得来。如果是普通的数组如int is[10] 编译时必须能确定数组长度,不然会报编译错误,这样灵活性受限比较大。我想这个就是new的存在原因之一吧,在栈中分. 阅读全文
posted @ 2012-12-11 10:30 fff8965 阅读(17571) 评论(0) 推荐(0)
摘要:头文件里包含很多内存操作的函数,可以简化开发、提高效率。memcpy, wmemcpy拷贝内存memset, wmemset给某段内存赋值memchr, wmemchr在内存中查找某字符memcmp, wmemcmp比较内存中的字符memmove, wmemmove移动内存值标准库:stdup() 在堆上创建空间并复制字符串,记得调用delete或free 阅读全文
posted @ 2012-12-11 09:36 fff8965 阅读(180) 评论(0) 推荐(0)